视图函数

代码

# 无参路由
@app.route('/test/')
def test():
    return 'for test'
# 带参路由,可以传递多个参数
@app.route('/welcome/<name>/')
def welcome(name):
    return 'Hello {}'.format(name)
# 指定参数类型,str(默认)、int、float、path、uuid
@app.route('/user/<int:uid>/')
def user(uid):
    return 'Hello {}号'.format(uid)
# path类型,类型仍然是str,只是将'/'作为普通字符处理
@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)        # ['music', 'sport']
    return '测试list转换器'

测试访问:http://localhost:5000/test/music,sport/

results matching ""

    No results matching ""