2、flask-请求
2023-08-21 本文已影响0人
许忠慧
一、请求参数
1、基础语法
from flask import Flask
# 创建一个app实例
app = Flask(__name__)
@app.route('/users/<name>') # 用尖括号来声明带参数
def root(name): # 绑定的方法中传入参数
return f'name={name}' # 代码里使用参数
if __name__ == '__main__':
app.run(debug=True)
效果:
2、定义参数类型
语法:
# 参数前加类型即可指定请求参数的类型。中间用冒号进行分割,注意:冒号前后不能包含空格
@app.route('/users/<int:age>')
def root(age):
return f'age={age}'
冒号前后一定不能包含空格
此时,如果传入的参数不合规访问页面时会如下图所示
支持的请求参数类型:
参数类型 | 说明 |
---|---|
string | 字符串格式,默认值 |
int | 整数 |
float | 浮点数 |
path | 路径 |
uuid | 唯一uuid字符串 |
路径参数示例:
uuid参数示例:
二、请求类型
基本语法
from flask import Flask, redirect, url_for
# 创建一个app实例
app = Flask(__name__)
@app.route('/', methods=['GET']) # 该路由只支持get类型请求,如果不填也是默认get请求
def root():
return f'hello'
@app.route('/users', methods=['POST', 'GET']) # 该路由既支持get类型请求也支持post类型请求
def users():
return 'hello users'
if __name__ == '__main__':
app.run(debug=True)
如果实际发的请求和路由定义的请求类型不匹配,网页上会出现 404
的错误
支持的请求类型 | 说明 |
---|---|
get |
最常用请求, 通常用于请求数据使用 |
post |
最常用请求,通常用于上传数据使用 |
head |
HEAD 方法请求一个与 GET 请求的响应相同的响应,但没有响应体, 只返回响应头,一般判断一个文件是否存在,不必要使用get请求获取整个文件内容,只需要使用该方式即可 |
put |
比较常用请求,一般修改资源时使用 |
delete |
比较常用请求,一般删除资源时使用 |
三、请求对象数据
基础语法
from flask import Flask, request
# 创建一个app实例
app = Flask(__name__)
@app.route('/users/', methods=['POST', 'GET'])
def users():
print(f'request.path = {request.path}') # 使用request方法可以获取请求参数
print(f'request.url = {request.url}')
return 'hello users'
if __name__ == '__main__':
app.run(debug=True)
request
的方法有很多,可以使用编辑器的自动补全进行查看,这里就不列举了
举个实例:文件上传
新建一个html
例如:
<html>
<head>
<title>File Upload</title>
</head>
<body>
<form action="http://localhost:5000/uploader" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="提交" />
</form>
</body>
</html>
html
的表单页签需要设置enctype="multipart/form-data"
属性
界面效果如下:
对应的python代码如下:
from flask import Flask, request
# 创建一个app实例
app = Flask(__name__)
@app.route('/uploader', methods=['POST', 'GET'])
def users():
print(request.files) # 可以打印一下这个对象看下
f = request.files['file'] # 接收上传的文件存到内存中
print(f.filename) # 获取上传上来文件的文件名
f.save(r'D:\test.txt') # 自定义一个保存路径和文件名
return "success"
if __name__ == '__main__':
app.run(debug=True)
此时选择一个文件上传,然后再提交即可将文件提交到flask
所在服务器