Flask HTTP 方法
HTTP 协议是万维网数据通信的基础。该协议定义了从指定 URL 检索数据的不同方法。
下表总结了不同的 HTTP 方法 −
| 序号 | 方法 & 描述 |
|---|---|
| 1 |
GET 以未加密形式向服务器发送数据。最常见的方法。 |
| 2 |
HEAD 与 GET 相同,但不包含响应体 |
| 3 |
POST 用于向服务器发送 HTML 表单数据。服务器不会缓存通过 POST 方法接收的数据。 |
| 4 |
PUT 用上传的内容替换目标资源的当前所有表示。 |
| 5 |
DELETE 删除由 URL 给定的目标资源的当前所有表示 |
默认情况下,Flask 路由响应 GET 请求。但是,可以通过为 route() 装饰器提供 methods 参数来更改此偏好。
为了演示在 URL 路由中使用 POST 方法,首先创建一个 HTML 表单,并使用 POST 方法将表单数据发送到 URL。
将以下脚本保存为 login.html
<html>
<body>
<form action = "http://localhost:5000/login" method = "post">
<p>Enter Name:</p>
<p><input type = "text" name = "nm" /></p>
<p><input type = "submit" value = "submit" /></p>
</form>
</body>
</html>
现在在 Python shell 中输入以下脚本。
from flask import Flask, redirect, url_for, request
app = Flask(__name__)
@app.route('/success/<name>')
def success(name):
return 'welcome %s' % name
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
user = request.form['nm']
return redirect(url_for('success',name = user))
else:
user = request.args.get('nm')
return redirect(url_for('success',name = user))
if __name__ == '__main__':
app.run(debug = True)
开发服务器启动运行后,在浏览器中打开 login.html,在文本字段中输入姓名并点击 Submit。
表单数据通过 form 标签的 action 子句以 POST 方式发送到 URL。
http://localhost/login 被映射到 login() 函数。由于服务器通过 POST 方法接收到了数据,因此从表单数据中获取 nm 参数的值通过以下方式获得 −
user = request.form['nm']
它作为变量部分传递给 /success URL。浏览器窗口中显示 welcome 消息。
在 login.html 中将 method 参数更改为 GET,然后在浏览器中重新打开它。服务器接收到的数据是通过 GET 方法的。现在 nm 参数的值通过以下方式获得 −
User = request.args.get(nm)
这里,args 是一个字典对象,包含表单参数及其对应值的键值对列表。nm 参数对应的值像之前一样传递给 /success URL。