Nachdem ich viele ähnlich klingende Probleme und die relevanten Flask-Dokumente gelesen habe, kann ich anscheinend nicht herausfinden, was beim Senden eines Formulars den folgenden Fehler erzeugt:
400 schlechte Anfrage
Der Browser (oder Proxy) hat eine Anfrage gesendet, die dieser Server nicht verstehen konnte.
Während das Formular immer richtig angezeigt wird, tritt die fehlerhafte Anforderung auf, wenn ich ein HTML-Formular sende, das mit einer der folgenden Funktionen verknüpft ist:
@app.route('/app/business', methods=['GET', 'POST'])
def apply_business():
if request.method == 'POST':
new_account = Business(name=request.form['name_field'], email=request.form['email_field'], account_type="business",
q1=request.form['q1_field'], q2=request.form['q2_field'], q3=request.form['q3_field'], q4=request.form['q4_field'],
q5=request.form['q5_field'], q6=request.form['q6_field'], q7=request.form['q7_field'],
account_status="pending", time=datetime.datetime.utcnow())
db.session.add(new_account)
db.session.commit()
session['name'] = request.form['name_field']
return redirect(url_for('success'))
return render_template('application.html', accounttype="business")
@app.route('/app/student', methods=['GET', 'POST'])
def apply_student():
if request.method == 'POST':
new_account = Student(name=request.form['name_field'], email=request.form['email_field'], account_type="student",
q1=request.form['q1_field'], q2=request.form['q2_field'], q3=request.form['q3_field'], q4=request.form['q4_field'],
q5=request.form['q5_field'], q6=request.form['q6_field'], q7=request.form['q7_field'], q8=request.form['q8_field'],
q9=request.form['q9_field'], q10=request.form['q10_field'],
account_status="pending", time=datetime.datetime.utcnow())
db.session.add(new_account)
db.session.commit()
session['name'] = request.form['name_field']
return redirect(url_for('success'))
return render_template('application.html', accounttype="student")
Der relevante Teil von HTML ist
<html>
<head>
<title>apply</title>
</head>
<body>
{% if accounttype=="business" %}
<form action="{{ url_for('apply_business') }}" method=post class="application_form">
{% elif accounttype=="student" %}
<form action="{{ url_for('apply_student') }}" method=post class="application_form">
{% endif %}
<p>Full Name:</p>
<input name="name_field" placeholder="First and Last">
<p>Email Address:</p>
<input name="email_field" placeholder="your@email.com">
...
Das Problem für die meisten Leute war nicht anzurufen GET
oder POST
, aber ich mache genau das in beiden Funktionen, und ich habe noch einmal überprüft, ob ich alles Notwendige importiert habe, wie z from flask import request
. Ich habe auch die Datenbank abgefragt und bestätigt, dass die Ergänzungen aus dem Formular nicht hinzugefügt wurden.
In der Flask-App habe ich Formularfelder angefordert, die im HTML-Formular leicht unterschiedlich gekennzeichnet waren. Die Namen konsistent zu halten ist ein Muss. Weitere Informationen finden Sie unter dieser Frage. Fehler beim Senden des Formulars, Flasche