参数不可以加引号,例如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

  1. import os
  2. from flask import Flask, Blueprint, render_template,g,request
  3. from flask_bootstrap import Bootstrap
  4. from werkzeug.routing import BaseConverter
  5. class MobileConverter(BaseConverter):
  6. regex = r'1[3-9]\d{9}'
  7. class DefualtConfig():
  8. DEBUG = True
  9. def create_app(test_config=None):
  10. # 创建一个配置app
  11. app = Flask(__name__)
  12. app.config.from_object(test_config)
  13. return app
  14. app = create_app(DefualtConfig)
  15. app.url_map.converters['mobile'] = MobileConverter
  16. bootstrap = Bootstrap(app)
  17. @app.route('/')
  18. def hello():
  19. print(g)
  20. print(request)
  21. return render_template('index.html')
  22. @app.route('/test')
  23. def test():
  24. print(request)
  25. print(g)
  26. return render_template('test.html')
  27. @app.route('/user/<int:userid>')
  28. def get_id(userid):
  29. return userid
  30. @app.route('/user/num/<mobile:number>')
  31. def get_num(number):
  32. return number
  33. @app.errorhandler(404)
  34. def page_not_found(e):
  35. print(request)
  36. return render_template('404.html'), 404
  37. @app.errorhandler(500)
  38. def internal_server_error(e):
  39. return render_template('500.html'), 500
  40. from blueps import ldap_op

获取request中参数

request.args是一个不可变字典,可以从其中获取参数,可以通过request.rgs.to_dict()转化为普通字典。