在Flask中定义URL路由规则有三种方法:
1、使用flask.Flask.route()装饰器
2、使用flask.Flask.add_url_rule函数
3、直接访问底层的Werkzeug路由系统:flask.Flask.url_map
下面就第1,2两种方法进行讲解:
flask.Flask.route()装饰器的函数原型为:route(rule, **options)
flask.Flask.add_url_rule函数的原型为:add_url_rule(*args, **kwargs)
其实,在底层,route装饰器也是调用add_url_rule函数的。
以下参数是上述两个函数所接受的:
rule:URL的规则,如'/' , '/index' 字符串类型
endpoint:所注册的URL规则的端点。没有特别声明的话,Flask通常将视图函数作为URL规则的端点。
view_func:视图函数,即默认的endpoint,当访问之前定义的rule时,由该函数处理请求。该视图函数也可以通过view_functions字典来指定。该字典的key是函数名称,value是函数本身。
defaults:规则的默认值,字典类型。可以为同一个函数定义多重规则,然而这些规则必须是唯一的。
如:
@app.route('/users/',defaults={'page':1})
@app.route('/users/page/<int:page>')
def show_user(page):
pass
当访问page 1时,URL为/users/ ;当访问page N时,URL为/users/page/N
subdomain:为submain指定规则,目的是防止subdomain matching在使用。如果没有指定的话,采用默认的subdomain。
**options:这些选项传递给底层的Rule对象。如@app.route('/login',methods=['GET','POST'])中的methods选项,默认情况是监听GET方法。