1.请求数据及其获取
序号 | 参数 | 解释 |
---|---|---|
1 | 固定参数 | 在路由上获取的 |
2 | 查询字符串:args | 根据需求 |
3 | 提交数据:form | 提交表单传递数据 |
4 | 文件上传:files | 用户向服务器上传文件 |
5 | 请求头:headers | 请求头携带的请求信息 |
6 | 请求方法:method | 请求所使用的请求方法 |
7 | URL地址:url | 请求的URL地址 |
2.固定参数与转换器
固定参数:是URL中固定的,是不可获取的一部分
@app.route('/hello/<int:id>/<string:name>')
# 固定参数路由要在函数中接收
def hello(id,name):
return '接收到的id是:%d,name是%s'%(id,name)
2.1 转换器
flask自带转换器共有6个
转换器 | 作用 |
---|---|
StringConverter | 字符串转换器 |
AnyConverter | 匹配any中任意路径 |
PathConverter | 路径转换器,参数可以包含’/’ |
IntergerConverter | 整1型转换器 |
FloatConverter | 浮点型转化器 |
UUIDConverter | UUID唯一标识码转换器 |
2.2 自定义转换器
如果flask内置转换器无法满足特定需求,可以自定义转换器
# 1 .导入转换器的基类
from werkzeug.routing import BaseConverter
# 2.继承转换器基类并且实现regex方法
class PhoneConverter(BaseConverter):
# 不能使用^、$ 符
regex = r'1[3-9][0-9]{9}'
# 3. 把自定义的转换器挂载到flask对象上面
app.url_map.converters['phone'] = PhoneConverter
# 4. 使用自定义转换器
@app.route('/phone/<phone:my_phone>')
def get_phone(my_phone):
return '手机号是:%s'%my_phone
3.获取参数
3.1 查询参数获取
# 查询参数的获取
from flask import request
@app.route('/query')
def query():
# 把不可变字典类型转换位普通的dict类型
params = request.args.to_dict()
print(params)
print(type(params))
# name = request.args.get('name')
name = request.args['name']
age = request.args.get('age')
return '当前名字:%s,年龄%s'%(name,age)
3.2 表单数据获取
# 表单参数的获取
from flask import request
@app.route('/form',methods=['post'])
def form():
# 把不可变字典类型转换位普通的dict类型
params = request.form.to_dict()
print(params)
print(type(params))
name = request.form.get('name')
age = request.form.get('age')
return '当前名字:%s,年龄%s' % (name, age)
3.3 文件上传
from flask import request
@app.route('/upload',methods=['post'])
def upload():
img = request.files.get('img')
print(img)
img.save("./01.png")
return '上传文件'
3.4 模板响应形式
# 返回一个模板页面
from flask import render_template
@app.route('/page')
def page():
return render_template('hello.html')
3.5 重定向
# 重定向
from flask import redirect
@app.route('/jump')
def jump():
return redirect('http://www.baidu.com/')
3.6 json数据响应
# 返回json数据
# dict-->json 其他-->dict-->json
from flask import jsonify
@app.route('/json')
def get_json():
data = {
"name":"haha",
"age":15,
"action":["吃","睡觉","喝水"]
}
return jsonify(data)
3.7 元组数据响应
# 元组数据返回响应(response,status,headers)
@app.route('/return')
def return_json():
return ("hello",400,{
"aaa":"bbb"
})
3.8 自定义响应
# 自定义响应对象
from flask import make_response
@app.route('/return_obj')
def return_obj():
resp = make_response('hello')
resp.headers['aaa'] = 'bbb'
resp.status = "404"
return resp