Estoy escribiendo una aplicación Web utilizando frasco, pitón y HTML. Mi problema es que la primera vez que se carga la una página web, me sale el siguiente errorSolicitud incorrecta de error con el frasco, Python, HTML, comportamiento inusual con la inicialización flask.request.form
Bad Request El navegador (o poder) enviaron una solicitud para que este servidor no podía comprender.
soy capaz de conseguir que la página cargue con el tiempo por "engañar" primera ejecutarlo sin ningún flask.request.form
llamadas, y luego volver a ponerlos en (detalles a continuación). Algo debe estar saliendo mal en mi inicialización. Soy nuevo en flask
y usando python
con HTML
.
Supongamos que estoy trabajando desde un directorio llamado example
. Tengo un script en Python llamada test.py
y una plantilla HTML llamada test.html
con la siguiente estructura de directorios:
\example\test.py
\example\templates\test.html
Mi script en Python test.py
es:
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()
y mi HTML en test.html
es
<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>
Pasos para reproducir el error
1: Ejecutar el script test.py
, y abrir la URL en un navegador
Running on http://127.0.0.1:5000/
Debería ver el siguiente error
Bad Request El navegador (o poder) envió una solicitud para que este servidor no pudo entender.
2: Comente las 2 primeras líneas de la función def get(self)
y elimine la tercera línea de la función def get(self)
modo que test.py
se parece a esto
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: Actualizar la URL, y verá que las cosas funcionen (aunque en última instancia quiero poder devolver el valor de result
4: Ahora, cambie las líneas que están comentadas de nuevo. Es decir, descomente las primeras 2 líneas de la función def get(self)
y comience t la tercera línea de la función def get(self)
modo que test.py
se parece a esto
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: Actualizar la URL y ahora se ven las cosas van a trabajar si lo deseas.
Esto es solo un ejemplo de juguete que ilustra el verdadero problema que presenta este extraño comportamiento de cómo tengo que "engañar" a mi navegador para que me muestre esta página web.El
impresionantes Gracias por la gran explicación ! – erin
Esta es una gran explicación sobre cómo implementar valores de solicitud predeterminados en Flask. Gracias. – earthmeLon
Estoy ejecutando la aplicación Flask en un servidor Apache. No importa lo que haga, recibo un error de solicitud incorrecta. 'El navegador envió una respuesta', etc. ¿Tiene algo que ver con mi servidor? –