参数不可以加引号,例如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 os
from flask import Flask, Blueprint, render_template,g,request
from flask_bootstrap import Bootstrap
from werkzeug.routing import BaseConverter
class MobileConverter(BaseConverter):
regex = r'1[3-9]\d{9}'
class DefualtConfig():
DEBUG = True
def create_app(test_config=None):
# 创建一个配置app
app = Flask(__name__)
app.config.from_object(test_config)
return app
app = create_app(DefualtConfig)
app.url_map.converters['mobile'] = MobileConverter
bootstrap = 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'), 500
from blueps import ldap_op
获取request中参数
request.args是一个不可变字典,可以从其中获取参数,可以通过request.rgs.to_dict()转化为普通字典。