web-dev-qa-db-fra.com

Flask - POST Erreur 405 Méthode non autorisée

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"?

55
darksky

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') }}"

40
Burhan Khalid

Remplacer:

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

avec:

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

Si vous omettez l'attribut action, le formulaire sera envoyé à l'URL actuelle.

Remplacer:

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

avec:

<form method="post">
4
Ankur_Jatt