2012-08-29 17 views
41

Estoy empezando a aprender Flask, y estoy tratando de crear un formulario que permita un método POST. He aquí mi método:Frasco - Error POST 405 Método no permitido

@app.route('/template', methods=['GET', 'POST']) 
def template(): 
    if request.method == 'POST': 
     return "Hello" 
    return render_template('index.html') 

Y mi index.html:

<html> 
    <head> 
    <title> Title </title> 
    </head> 
    <body> 
    Enter Python to execute: 
    <form action="/" method="post"> 
     <input type="text" name="expression" /> 
     <input type="submit" value="Execute" /> 
    </form> 
    </body> 
</html> 

Carga del formulario (que lo hacen cuando recibe GET) funciona bien. Sin embargo, cuando hago clic en el botón de enviar, obtengo un error de POST 405 Método no permitido. ¿Por qué no se muestra Hola?

Respuesta

32

Su forma está sometiendo a / cuando se enruta el método para /template a menos que es un error, usted debe ajustar el atributo de su forma action para apuntar a la template vista: action="{{ url_for('template') }}"

11

Reemplazar:

<form action="/" method="post"> 

con:

<form action="{{ url_for('template') }}" method="post"> 
4

Si se omite el action atributo, el formulario se publicará en la URL actual.

Reemplazar:

<form action="/" method="post"> 

con:

<form method="post"> 
Cuestiones relacionadas