先看一个例子
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/<username>')
def show_user(username):
print(username)
@app.route('/post/<int:post_id>')
def show_post(post_id):
print(post_id)
@app.route("/username")
def username():
pass
访问localhost:5000/name,localhost:5000/name1等会匹配到show_user(),但访问localhost:5000/username会匹配到username()
尖括号指定了路由中的变量部分,默认情况下,URL 中的变量部分接受任何不带斜线的字符串,而 也可以指定不同的转换器
变量部分以关键字参数传递给视图函数。
下面的转换器是可用的:
关键字 | 解释 |
---|---|
string | 接受任何不带斜线的字符串(默认的转换器) |
int | 接受整数 |
float | 同 int ,但是接受浮点数 |
path | 和默认的相似,但也接受斜线 |
也可以为同一个函数定义多个规则,但必须唯一,如下
@app.route("/user/username")
@app.route("/username")
def username():
pass
也可以使用flask.Flask.add_url_rule() 函数来定义规则,如下
def username():
pass
app.add_url_rule('/user/username', view_func=username, methods=["GET"])
app.add_url_rule('/username', view_func=username, methods=["GET"])
以下是 route() 和 add_url_rule() 接受的参数。
参数 | 解释 |
---|---|
rule | 注册的 URL 规则的末端。如果没有显式地规定,Flask 本身假设末端的名称是视图函数的名称,。 |
view_func | 当请求呈递到给定的末端时调用的函数。如果没有提供,可以在用在 view_functions 字典中以末端作为键名存储,来在之后设定函数。 |
defaults | 规则默认值的字典。上面的示例介绍了默认值如何工作。 |
subdomain | 当使用子域名匹配的时候,为子域名设定规则。如果没有给定,假定为默认的子域名。 |
**options | 这些选项会被推送给底层的 Rule 对象。一个 Werkzeug 的变化是 method 选项的处理。methods是这个规则被限定的方法列表( GET , POST 等等)。默认情况下,规则只监听 GET (也隐式地监听 HEAD )。从 Flask 0.6 开始,OPTIONS 也被隐式地加入,并且做标准的请求处理。 它们需要作为关键字参数来给定 |
更多技术文章可关注个人公众号: 码农Fly
公众号二维码: