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 [〜#〜]を受け取ったときにレンダリングする)は正常に機能します。 submitボタンをクリックすると、POST 405 error Method Not Allowed
。
なぜ"Hello"が表示されないのですか?
メソッドが/
にルーティングされる場合、フォームが/template
に送信されます。タイプミスでない限り、フォームのaction
属性を調整してtemplate
ビューを指すようにしてください:action="{{ url_for('template') }}"
交換:
<form action="/" method="post">
で:
<form action="{{ url_for('template') }}" method="post">
action
属性を省略すると、フォームは現在のURLに投稿します。
交換:
<form action="/" method="post">
で:
<form method="post">