Flask HTTP Methods怎么用?GET POST PUT DELETE请求分别怎么处理?

文章导读
Previous Quiz Next HTTP 协议是万维网数据通信的基础。该协议定义了从指定 URL 检索数据的不同方法。
A A

Flask HTTP 方法



Previous
Quiz
Next

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

Post Method Example

表单数据通过 form 标签的 action 子句以 POST 方式发送到 URL。

http://localhost/login 被映射到 login() 函数。由于服务器通过 POST 方法接收到了数据,因此从表单数据中获取 nm 参数的值通过以下方式获得 −

user = request.form['nm']

它作为变量部分传递给 /success URL。浏览器窗口中显示 welcome 消息。

Welcome Message

login.html 中将 method 参数更改为 GET,然后在浏览器中重新打开它。服务器接收到的数据是通过 GET 方法的。现在 nm 参数的值通过以下方式获得 −

User = request.args.get(nm)

这里,args 是一个字典对象,包含表单参数及其对应值的键值对列表。nm 参数对应的值像之前一样传递给 /success URL。