码迷,mamicode.com
首页 > 其他好文 > 详细

发布功能完成。

时间:2017-11-28 10:29:37      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:direct   session   pos   index   eth   orm   mit   映射   on()   

  • 编写要求登录的装饰器
  • def loginFrist(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            if session.get(‘user‘):
                return func(*args, **kwargs)
            else:
                return redirect(url_for(‘login‘))
        return wrapper
    

      

    • 应用装饰器,要求在发布前进行登录,登录后可发布。
    • @app.route(‘/question/‘,methods=[‘GET‘,‘POST‘])
      @loginFrist
      def question():
          if request.method==‘GET‘:
              return render_template(‘question.html‘)
          else:
              title=request.form.get(‘title‘)
              detail=request.form.get(‘detail‘)
              author_id=User.query.fiflter(User.username==session.get(‘user‘)).first().id
              question=Question(title=title,detail=detail,author_id=author_id)
              db.session.add(question)
              db.session.commit()
              return redirect(url_for(‘index‘))
      

        

      • 建立发布内容的对象关系映射。
      • class Question(db.Model):
            __tablename__=‘question‘
            id=db.Column(db.Integer, primary_key=True, autoincrement=True)
            title=db.Column(db.String(100),nullable=False)
            detail=db.Column(db.Text,nullable=False)
            creat_time=db.Column(db.DateTime,default=datetime.now)
            author_id=db.Column(db.Integer, db.ForeignKey(‘user id‘))
            author=db.relationship(‘User‘, backref=db.backref(‘question‘))
        

          

        • 完成发布函数。
        • {% extends ‘base.html‘ %} }
          {% block title %}发布问答{% endblock %}
          
          {% block head %}
              <link rel="stylesheet" href="{{ url_for(‘static‘,filename=‘css/question.css‘) }}" >
              <script src="{{ url_for(‘static‘,filename=‘JS/question.js‘) }}"></script>
          {% endblock %}
          
          {% block main %}
              <div class="label0">
              <h1>发布问答</h1>
                  <div class="q1">
                      <label for="question">问题</label>
                      <textarea id="question" cols="50" rows="1"></textarea>
                  </div>
                  <div class="form-group">
                      <label for="questionDetail">详情</label>
                      <textarea class="form-control" id="questionDetail" cols="50" rows="5"></textarea>
                  </div>
                  <div class="input-area">
                      <button onclick="fnQuestion">发布问答</button>
                  </div>
              </div>
          {% endblock %}
          

            

发布功能完成。

标签:direct   session   pos   index   eth   orm   mit   映射   on()   

原文地址:http://www.cnblogs.com/D0204/p/7908153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!