65

私はFlaskを学び始めたばかりで、POSTメソッドを許可するフォームを作成しようとしています。

これが私の方法です:

@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 error Method Not Allowed

「こんにちは」と表示されないのはなぜですか?

4

3 に答える 3

49

タイプミスでない限り/、メソッドがルーティングされるときにフォームが送信されます。ビューを指すようにフォームの属性を調整する必要があります。/templateactiontemplateaction="{{ url_for('template') }}"

于 2012-08-29T13:57:24.707 に答える
16

交換:

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

と:

 <form action="{{ url_for('template') }}" method="post">
于 2012-08-29T14:03:01.790 に答える
6

属性を省略するactionと、フォームは現在のURLに投稿されます。

交換:

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

と:

<form method="post">
于 2014-02-15T11:28:01.263 に答える