Flask HTTP 方法不允许消息
Flask HTTP Method Not Allowed Message
from flask import Flask, render_template,request
app = Flask(__name__)
@app.route('/',methods=['post'])
def main():
if (request.method=="POST"):
text=request.form('write')
if(text==None):
text=""
else:
text=""
return render_template('form.html',text=text)
if __name__ == "__main__":
app.run(debug=True)
我只想接收 POST 方法。所以我将 method
选项设置为 methods=["post"]
。但它总是发送 HTTP 405 Not Allowed Method
错误。
<html>
<head>
<title>Using Tag</title>
</head>
<body>
<form method="POST">
<input type="text" name="write">
<input type="submit">
</form>
{{ text }}
</body>
</html>
我想知道此应用程序只发送 HTTP 405 响应的原因。
要从 /
路径访问 HTML 表单,您需要在该路径中同时启用 GET
和 POST
请求。否则,当您尝试从浏览器访问根路径 /
时,您将获得 HTTP Method not allowed error
.
app.py
:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def main():
text = ""
if request.method == "POST":
text = request.form['username']
return render_template('form.html', text=text)
if __name__ == "__main__":
app.run(debug=True)
templates/form.html
:
<html>
<head>
<title>Using Tag</title>
</head>
<body>
<form method="POST">
<input type="text" name="write">
<input type="submit">
</form>
{{ text }}
</body>
</html>
输出:
解释(更新):
- 要访问表单值,请使用
request.form['INPUT_FIELD_NAME']
。
- 我们正在向
/
路由发出 GET
和 POST
请求。因此,我们在 /
路由的 methods
选项中设置 GET
和 POST
请求。当我们使用浏览器查看页面时,我们向该页面发出 GET
请求。当我们提交表单时,我们向该页面发出 POST
请求。在这种情况下,我们将表单值存储在 text
变量中并将该值传递给模板。对于 GET
请求,我们显示空 text
值。
以上代码段与以下代码段相同:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def main():
if request.method == "POST":
text = request.form['username']
return render_template('form.html', text=text)
elif request.method == "GET":
return render_template('form.html', text="")
if __name__ == "__main__":
app.run(debug=True)
参考文献:
from flask import Flask, render_template,request
app = Flask(__name__)
@app.route('/',methods=['post'])
def main():
if (request.method=="POST"):
text=request.form('write')
if(text==None):
text=""
else:
text=""
return render_template('form.html',text=text)
if __name__ == "__main__":
app.run(debug=True)
我只想接收 POST 方法。所以我将 method
选项设置为 methods=["post"]
。但它总是发送 HTTP 405 Not Allowed Method
错误。
<html>
<head>
<title>Using Tag</title>
</head>
<body>
<form method="POST">
<input type="text" name="write">
<input type="submit">
</form>
{{ text }}
</body>
</html>
我想知道此应用程序只发送 HTTP 405 响应的原因。
要从 /
路径访问 HTML 表单,您需要在该路径中同时启用 GET
和 POST
请求。否则,当您尝试从浏览器访问根路径 /
时,您将获得 HTTP Method not allowed error
.
app.py
:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def main():
text = ""
if request.method == "POST":
text = request.form['username']
return render_template('form.html', text=text)
if __name__ == "__main__":
app.run(debug=True)
templates/form.html
:
<html>
<head>
<title>Using Tag</title>
</head>
<body>
<form method="POST">
<input type="text" name="write">
<input type="submit">
</form>
{{ text }}
</body>
</html>
输出:
解释(更新):
- 要访问表单值,请使用
request.form['INPUT_FIELD_NAME']
。 - 我们正在向
/
路由发出GET
和POST
请求。因此,我们在/
路由的methods
选项中设置GET
和POST
请求。当我们使用浏览器查看页面时,我们向该页面发出GET
请求。当我们提交表单时,我们向该页面发出POST
请求。在这种情况下,我们将表单值存储在text
变量中并将该值传递给模板。对于GET
请求,我们显示空text
值。
以上代码段与以下代码段相同:
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def main():
if request.method == "POST":
text = request.form['username']
return render_template('form.html', text=text)
elif request.method == "GET":
return render_template('form.html', text="")
if __name__ == "__main__":
app.run(debug=True)
参考文献: