flask-请求-请求参数-转换器
需求:提取url地址中的固定参数
即ip和port后边的地址,例如http://127.0.0.1:5000/2022 2022即为固定参数
http://127.0.0.1:8000/user/?name=aa 属于参数
如何查询地址?
url地址栏中,问号后面、等号传值、与号分隔;
flask的语法:<>,里边上形餐名称,必须传给视图函数
原理:转换器,类似django中的正则表达式
1 from flask import Flask 2 from werkzeug.routing import BaseConverter 3 4 app = Flask(__name__) 5 6 #如果只接收整形值 此处<int:形参> 内置转换器 7 @app.route('/<int:temp>') 8 9 def index(temp): 10 return 'hello %s' % temp 11 12 if __name__ == '__main__': 13 print(app.url_map) 14 app.run()
一、请求信息
1、固定参数
认识转换器---Flask中6种默认转换器:整型值、字符串、浮点、any、path、uuid
(1)内置转换器
(2)自定义转换器:当内置转换器无法满足需求,可以自定义转换器
步骤:
- 定义转换器类,继承自baseconverter
- 把自定义的转换器类,添加到转换器字典容器中
- 在装饰器中使用转换器
1 #目的来实现参数是手机号 2 #1、定义继承自baseconverter的类 3 class RexPhoneConverter(BaseConverter): 4 rex = r'1[3-9]\d{9}' 5 6 #2、添加自定义的转换器类到转换器字典容器中 7 app.url_map.converters['phone'] = RexPhoneConverter 8 9 #3、在装饰器中使用转换器 10 @app.route('user/<phone:temp>')
2、其他参数
使用request对象来获取
1 from flask import Flask,request 2 3 app = Flask(__name__) 4 @app.route('/') 5 def phone1(): 6 # url: http://127.0.0.1:5000/?phone=123 7 # 运行的结果为123 url中的字符串args 8 phone = request.args.get('phone') 9 return 'hello {}'.format(phone) 10 #表单 11 user = request.form.get('user') 12 pwd = request.form.get('pwd') 13 print('user:{},pwd:{}'.format(user,pwd)) 14 #其他 比如method url headers等 15 print(request.method) 16 print(request.url) 17 print(request.headers) 18 #文件,并保存在当前目录中名字叫new.jpg 19 @app.route('/image',methods=['GET','POST']) 20 def save_img(): 21 img = request.files.get('image') 22 print('image:{}'.format(img)) 23 img.save('./new.jpg') 24 if __name__ == "__main__": 25 app.run()