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

發布功能完成

rgs post app render class 數據 query user itl

  • 編寫要求登錄的裝飾器

from functools import wraps

def loginFirst(func): #參數是函數

@wraps(func)

def wrapper(*args, ** kwargs): #定義個函數將其返回

#要求登錄

return func(*args, ** kwargs)

return wrapper #返回一個函數

def loginFirst(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‘])
@loginFirst
def question():
@app.route(/ask/,methods=[GET,POST])
@loginFirst
def ask():
    
if request.method==GET: return render_template(ask.html) else: title= request.form.get(title) detail = request.form.get(detail) author_id = User.query.filter(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(base))# 跳轉

  • 建立發布內容的對象關系映射。
class Question(db.Model):
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)
    create_time=db.Column(db.DateTime,default=datetime.now)
    author_id =db.Column(db.Integer,db.ForeignKey(use.id))
    author=db.relationship(User,backref=db.backref(question))

  • 完成發布函數。

保存到數據庫。

重定向到首頁。

發布功能完成