Je commence tout juste à apprendre Flask et j'essaie de créer un formulaire qui permette une méthode POST .
Voici ma méthode:
@app.route('/template', methods=['GET', 'POST'])
def template():
if request.method == 'POST':
return("Hello")
return render_template('index.html')
Et mon 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>
Charger le formulaire (le rendre à la réception GET ) fonctionne correctement. Lorsque je clique sur le bouton submit, je reçois un POST 405 error Method Not Allowed
.
Pourquoi ne pas afficher "Hello"?
Votre formulaire est soumis à /
Lorsque la méthode est acheminée pour /template
Sauf s'il s'agit d'une faute de frappe, vous devez ajuster l'attribut action
de votre formulaire pour qu'il pointe vers template
vue: action="{{ url_for('template') }}"
Remplacer:
<form action="/" method="post">
avec:
<form action="{{ url_for('template') }}" method="post">
Si vous omettez l'attribut action
, le formulaire sera envoyé à l'URL actuelle.
Remplacer:
<form action="/" method="post">
avec:
<form method="post">