Oké, dus bedankt aan Daniel en Doobeh om me in de goede richting te wijzen. Eigenlijk kwam het erop neer dat ik de blog_id niet correct aanvroeg in de POST-methode van edit_entry. Hier is de nieuwe (en werkende) code.
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)
Er waren uiteindelijk twee grote problemen. Fist was een vergissing:toen ik de edit_entry-sjabloon kopieerde van de new_entry-sjabloon, vergat ik de actie van het formulier te wijzigen, dus het formulier postte eigenlijk naar de nieuwe_invoerroute, dus de duplicatie. Nadat ik dat probleem had gevonden, realiseerde ik me ook dat hoewel blog_id in request.args werd doorgegeven aan de 'GET'-methode, het niet werd doorgegeven in de 'POST'-methode (aangezien de post niet afkomstig was van de omleiding), dus Ik heb eigenlijk een nieuw veld gemaakt in de edit_entry-sjabloon om de blog_id terug te sturen naar POST.