sql >> Databasteknik >  >> RDS >> Mysql

En Flask-SQLAlchemy-uppdatering skapar en ny post i MySQL

Okej, så tack till Daniel och Doobeh för att de pekade mig i rätt riktning. I grund och botten kom det till att jag inte begärde blog_id ordentligt i POST-metoden för edit_entry. Här är den nya (och fungerande) koden.

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)

Det slutade med två stora frågor. Fist var ett förbiseende:när jag kopierade edit_entry-mallen från new_entry-mallen glömde jag att ändra åtgärden för formuläret, så formuläret skickades faktiskt till new_entry-rutten, alltså dubbleringen. Efter att jag hittade det problemet insåg jag också att även om blog_id skickades i request.args till 'GET'-metoden, skickades det inte i 'POST'-metoden (eftersom inlägget inte kom från omdirigeringen), så Jag skapade faktiskt ett nytt fält i mallen edit_entry för att skicka tillbaka blog_id till POST.




  1. ZF2 sanera variabler för DB-frågor

  2. hur man sammanfogar två tabeller om vanliga attribut i mysql och php?

  3. Installera Oracle Database 12c-programvaran på Windows

  4. hur implementerar man en effektiv sökalgoritm när man använder php och en mysql-databas?