- Flask 教程
- Flask - 首页
- Flask - 概述
- Flask - 环境
- Flask - 应用
- Flask - 路由
- Flask - 变量规则
- Flask - URL 构建
- Flask – HTTP 方法
- Flask - 模板
- Flask - 静态文件
- Flask - 请求对象
- 将表单数据发送到模板
- Flask - Cookie
- Flask - 会话
- Flask - 重定向和错误
- Flask - 消息闪现
- Flask - 文件上传
- Flask - 扩展
- Flask - 邮件
- Flask - WTF
- Flask - SQLite
- Flask - SQLAlchemy
- Flask - Sijax
- Flask - 部署
- Flask - FastCGI
- Flask 有用资源
- Flask - 快速指南
- Flask - 有用资源
- Flask - 讨论
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 = "https://127.0.0.1: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**,在文本字段中输入名称,然后单击 **提交**。
表单数据通过表单标签的 action 子句中的 POST 方法发送到 URL。
**https://127.0.0.1/login** 映射到 **login()** 函数。由于服务器已通过 **POST** 方法接收数据,因此从表单数据中获得的 'nm' 参数的值通过以下方式获得:
user = request.form['nm']
它作为变量部分传递到 **‘/success’** URL。浏览器在窗口中显示 **欢迎** 消息。
在 **login.html** 中将 method 参数更改为 **‘GET’**,然后在浏览器中再次打开它。服务器接收到的数据是通过 **GET** 方法。现在通过以下方式获得 'nm' 参数的值:
User = request.args.get(‘nm’)
这里,**args** 是一个字典对象,包含表单参数及其对应值的列表。与 'nm' 参数对应的值像之前一样传递到 'success' URL。