参数不可以加引号,例如127.0.0.1/query?name=zhangsan即可
而不是name=’zhangsan’
转换器尖括号<>
使用这个办法,url不是?xx=的格式,可以通过request.rgs获取?后的参数
<>是一个转换器,默认为字符串类型,将该位置的数据以字符串格式进行匹配数据类型,<>内为参数名传入视图函数中。
例如
@app.route(‘/users/
def user_info(user_id):
print(type(user_id))
return ‘Hello user {}’.format(user_id)
数据类型:参数
默认情况下类型是string的
如果指定数据类型,需要使用冒号的方式分隔,例如
@app.route(‘users/
指定类型之后,如果类型不匹配的话则会404.
自定义数据类型
Werkzeug.routing 下有个BaseConverter的类,如果自定义数据类型,需要继承这个类。
regex 正则表达式,可以定义自己的正则规则
class MobileConverter(BaseConverter):
regex = 1
定义完了之后需要将新的转换器告诉flask,即往字典中添加类型转换器
app.url_map.converters[‘mobile’]=MobileConverter
import osfrom flask import Flask, Blueprint, render_template,g,requestfrom flask_bootstrap import Bootstrapfrom werkzeug.routing import BaseConverterclass MobileConverter(BaseConverter):regex = r'1[3-9]\d{9}'class DefualtConfig():DEBUG = Truedef create_app(test_config=None):# 创建一个配置appapp = Flask(__name__)app.config.from_object(test_config)return appapp = create_app(DefualtConfig)app.url_map.converters['mobile'] = MobileConverterbootstrap = Bootstrap(app)@app.route('/')def hello():print(g)print(request)return render_template('index.html')@app.route('/test')def test():print(request)print(g)return render_template('test.html')@app.route('/user/<int:userid>')def get_id(userid):return userid@app.route('/user/num/<mobile:number>')def get_num(number):return number@app.errorhandler(404)def page_not_found(e):print(request)return render_template('404.html'), 404@app.errorhandler(500)def internal_server_error(e):return render_template('500.html'), 500from blueps import ldap_op
获取request中参数
request.args是一个不可变字典,可以从其中获取参数,可以通过request.rgs.to_dict()转化为普通字典。
