Ich schreibe eine Web-App mit Kolben, Python und HTML. Mein Problem ist, dass das erste Mal, dass ich die eine Webseite laden, bekomme ich folgende FehlerBad Request Error mit Kolben, Python, HTML, ungewöhnliches Initialisierungsverhalten mit flask.request.form
Bad Request Der Browser (oder Proxy) eine Anfrage erhalten hat, dass dieser Server nicht verstehen kann.
Ich bin in der Lage, die Seite zu bekommen schließlich von „austricksen“ zuerst laden ohne flask.request.form
Anrufe läuft, und sie dann wieder in (Details unten) setzen. Bei meiner Initialisierung muss etwas schief gehen. Ich bin neu in flask
und mit python
mit HTML
.
Angenommen, ich arbeite von einem Verzeichnis namens example
. Ich habe ein Python-Skript test.py
und ein HTML-Template namens test.html
mit der folgenden Verzeichnisstruktur genannt:
\example\test.py
\example\templates\test.html
Mein Python-Skript test.py
ist:
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
result = flask.request.form['result']
return flask.render_template('test.html', result=result)
# return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
und mein HTML in test.html
ist
<html>
<head>
</head>
<body>
<form action="/" method="post">
Enter something into the box:
<input type="text" name="result"/><br>
<input type="submit" value="Execute!"/>
</form>
</body>
</html>
Schritte zum Reproduzieren des Fehlers
1: Führen Sie das test.py
Skript, und öffnen Sie die URL in einem Browser auf
Running on http://127.0.0.1:5000/
Sie sollten die folgenden Fehler
Bad Request Der Browser (oder Proxy) sehen schickte eine Anfrage, dass Dieser Server konnte nicht verstehen.
2: die ersten zwei Zeilen der def get(self)
Funktion Kommentar und die dritte Zeile der def get(self)
Funktion Kommentar-, so dass test.py
wie diese
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
# result = flask.request.form['result']
# return flask.render_template('test.html', result=result)
return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
3 aussieht: Aktualisieren Sie die URL, und Sie werden sehen, dass die Dinge funktionieren (obwohl ich den Wert von result
4 zurückzukehren schließlich in der Lage sein wollen: Nun wechseln die Zeilen, die wieder auf Kommentar werden Dh, Kommentar- der ersten 2 Zeilen der def get(self)
Funktion und commen. t die dritte Zeile der def get(self)
Funktion, so dass test.py
wie diese
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
result = flask.request.form['result']
return flask.render_template('test.html', result=result)
# return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
5 aussieht: Aktualisieren Sie die URL und jetzt sehen Sie die Dinge wie gewünscht arbeiten.
Dies ist nur ein Spielzeugbeispiel, das das wirkliche Problem darstellt, dieses seltsame Verhalten zu zeigen, wie ich meinen Browser "tricksen" muss, um mir diese Webseite zu zeigen.Die
genial Danke für die tolle Erklärung ! – erin
Dies ist eine großartige Erklärung, wie Standardanforderungen in Flask implementiert werden. Vielen Dank. – earthmeLon
Ich verwende die Flask-App auf einem Apache-Server. Egal was ich mache, bekomme ich einen fehlerhaften Anforderungsfehler. 'Der Browser hat eine Antwort gesendet' usw. Hat das etwas mit meinem Server zu tun? –