0
這是代碼。我有一個模型,其中有一個類的項目。如何將創建的帖子傳遞給Flask自己的視圖?
class Item(db.Model):
id = db.Column(db.Integer,primary_key=True)
title = db.Column(db.String(80),unique=True)
content = db.Column(db.String(80),unique=True)
category = db.Column(db.String(80))
def __init__(self,title,content,category):
self.title = title
self.content = content
self.category = category
def __repr__(self):
return '<Item %r>' % self.title
@app.route('/create',methods=('GET','POST'))
def create():
if request.method == 'POST':
if request.form.get('title') and request.form.get('content'):
item = Item(request.form['title'],request.form['content'],request.form['category'])
flash('Item created successfully','success')
db.session.add(item)
db.session.commit()
return redirect(url_for('view'),item=item)
else:
flash('Title and Content are required.','danger')
form = ItemForm()
return render_template('create.html',form=form)
@app.route('/view/<item>')
def view(item):
query = Item.query.filter_by(title=item.title)
return render_template('view.html',item=item)
正如您所看到的,我在基於Item類的create route中創建了該項目。然後我通過item = item作爲重定向到視圖的參數。但現在這個視圖不喜歡我的物品。我得到的錯誤:
BuildError: Could not build url for endpoint 'view'. Did you forget to specify values ['item']?
我想我不知道應該獨立通過項目件?如需要的標題和內容和類別?我真的不確定。
你可以發佈你正在考慮的整個創建功能代碼嗎?我不確定你的意思是這個重定向應該在if request.method =='POST'邏輯中嗎? (它已經是),或者就在函數返回之外。這也是令人困惑的,因爲無論請求是發佈還是獲取權利,它都會是相同的回報。在這種情況下,我會在哪裏獲得物品?目前,在外部循環中,我擁有的是表單對象 – BigBoy1337
沒關係,我明白了。我錯過了參數在url_for中傳遞,而不是重定向部分。我想你說錯了,而不是render_template函數? – BigBoy1337