视图函数
代码
@app.route('/test/')
def test():
return 'for test'
@app.route('/welcome/<name>/')
def welcome(name):
return 'Hello {}'.format(name)
@app.route('/user/<int:uid>/')
def user(uid):
return 'Hello {}号'.format(uid)
@app.route('/path/<path:p>/')
def path(p):
return p
说明
- 路由末尾的'/'建议都加上,以防出现末尾多加'/'而出现的问题。
- 若需要指定路由参数,参数应该写在<>中,对应的视图函数需要同名的参数
- 路由参数可以指定多个,也可以指定类型
- 常用类型:int/float/path/uuid,默认为字符串,使用:与参数分割,放在参数前
- path的类型仍然是字符串,只是不再将'/'作为特殊字符
补充
- 上述的参数类型其实是框架支持的转换器,就是将参数转换为指定的类型,可按如下步骤进行添加:
from werkzeug.routing import BaseConverter
class ListConverter(BaseConverter):
def to_python(self, value):
return value.split(',')
def to_url(self, values):
return ','.join(super().to_url(value)
for value in values)
app = Flask(__name__)
app.url_map.converters['list'] = ListConverter
@app.route('/test/<list:like>/')
def test(like):
print(like)
return '测试list转换器'
测试访问:http://localhost:5000/test/music,sport/