Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Aktualizacja Flask-SQLAlchemy tworzy nowy rekord w MySQL

Ok, więc dziękuję Danielowi i Doobehowi za wskazanie mi właściwych kierunków. Zasadniczo sprowadzało się to do tego, że nie zażądałem poprawnie identyfikatora bloga w metodzie POST edit_entry. Oto nowy (i działający) kod.

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)

Skończyły się na tym, że pojawiły się dwa główne problemy. Pięść była przeoczeniem:kiedy skopiowałem szablon edit_entry z szablonu new_entry, zapomniałem zmienić akcję formularza, więc formularz był wysyłany na trasę nowe_wpis, stąd duplikacja. Po znalezieniu tego problemu zdałem sobie również sprawę, że chociaż blog_id był przekazywany w request.args do metody „GET”, nie był przekazywany w metodzie „POST” (ponieważ post nie pochodził z przekierowania), więc Właściwie utworzyłem nowe pole w szablonie edit_entry, aby przekazać identyfikator blog_id z powrotem do POST.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nigdy nie usuwać wpisów? Dobry pomysł? Zwykły?

  2. Nie można uzyskać dostępu do MySQL po automatycznym wygenerowaniu tymczasowego hasła

  3. Skonfiguruj replikację bazy danych Master-Master MySQL

  4. Tabela MySQL ze stałą liczbą wierszy?

  5. Określ SSL dla połączenia z zewnętrzną bazą danych MySQL Heroku