发布功能完成。

Posted 002邓诺斯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发布功能完成。相关的知识,希望对你有一定的参考价值。

  • 编写要求登录的装饰器
  • 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 %}
          

            

以上是关于发布功能完成。的主要内容,如果未能解决你的问题,请参考以下文章

运行/调试你的PHP代码

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

如何设置 vscode 的代码片段,以便在自动完成后自动触发 vscode 的智能感知?

Android片段布局完成膨胀