1. 程式人生 > >發布功能完成。

發布功能完成。

對象 column aps war direct mar user .get als

  • 編寫要求登錄的裝飾器
  • 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 %}
          

            

發布功能完成。