2012-08-29 551 views
41

私はFlaskを習得し始めていますが、POSTメソッドを可能にするフォームを作成しようとしています。Flask - POSTエラー405メソッドが許可されていません

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

そして、私の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> 

正常に動作します(それがGET受信したときにそれをレンダリング)、フォームのロードここに私の方法です。しかし、送信ボタンをクリックすると、POST 405エラーが発生する。なぜそれが表示されていないこんにちは?

答えて

32

方法はそれはタイプミスがある場合を除き、あなたはtemplateビューを指すようにフォームのaction属性を調整する必要があり/templateのためにルーティングされたときに、フォームが/に提出されています。交換してくださいaction="{{ url_for('template') }}"

11

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

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

あなたはを省略した場合属性の場合、フォームは現在のURLに送信されます。

置き換えます

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

で:

<form method="post"> 
関連する問題