- 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://: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:///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。
