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()

 

posted on 2022-03-23 17:18  小呆呆yy  阅读(112)  评论(0编辑  收藏  举报