ठीक है, इसलिए मुझे सही दिशा में इंगित करने के लिए डैनियल और डोबेह का धन्यवाद। मूल रूप से यह मेरे लिए नीचे आया कि संपादित_एंट्री की POST विधि में blog_id का ठीक से अनुरोध नहीं किया। यहाँ नया (और काम करने वाला) कोड है।
def edit_entry():
form = BlogEntry()
if request.method == 'POST':
blog_id = request.form.get('blog_id')
update = db.session.query(models.Blog).filter_by(id = blog_id).update({
'title': request.form.get('title'),
'content': request.form.get('content')
})
db.session.commit()
return redirect(url_for('blog'))
elif request.method == 'GET':
blog_id = int(request.args['blog_id'])
post = models.Blog.query.filter_by(id = blog_id).first_or_404()
context = {
'copyright': COPYRIGHT,
'form': form,
'blog_id': blog_id
}
form.title.data = post.title
form.content.data = post.content
return render_template('edit_entry.html', **context)
दो प्रमुख मुद्दों के रूप में समाप्त हो गया। मुट्ठी एक निरीक्षण था:जब मैंने new_entry टेम्पलेट से edit_entry टेम्पलेट की प्रतिलिपि बनाई, तो मैं फॉर्म की क्रिया को बदलना भूल गया, इसलिए फॉर्म वास्तव में new_entry मार्ग पर पोस्ट कर रहा था, इस प्रकार डुप्लिकेशंस। मुझे उस समस्या का पता चलने के बाद, मुझे यह भी एहसास हुआ कि जब blog_id को request.args में 'GET' मेथड में पास किया गया था, तो इसे 'POST' मेथड में पास नहीं किया जा रहा था (चूंकि पोस्ट रीडायरेक्ट से नहीं आ रहा था), इसलिए मैंने वास्तव में blog_id को POST पर वापस भेजने के लिए edit_entry टेम्पलेट में एक नया फ़ील्ड बनाया है।