烧瓶:获取当前路线

时间:2014-02-01 13:35:22

标签: python url flask

在Flask中,当我有多个相同功能的路线时, 我怎么知道目前使用哪条路线?

例如:

@app.route("/antitop/")
@app.route("/top/")
@requires_auth
def show_top():
    ....

我怎么知道,现在我使用/top//antitop/来电话?

更新

我知道request_path我不想使用它,因为请求可能相当复杂,我想在函数中重复路由逻辑。我认为url_rule解决方案是最好的解决方案。

4 个答案:

答案 0 :(得分:54)

只需使用request.path

from flask import request

...

@app.route("/antitop/")
@app.route("/top/")
@requires_auth
def show_top():
    ... request.path ...

答案 1 :(得分:42)

通过request.url_rule检查哪条路线触发了您的观看次数最“严苛”的方式。

from flask import request

rule = request.url_rule

if 'antitop' in rule.rule:
    # request by '/antitop'

elif 'top' in rule.rule:
    # request by '/top'

答案 2 :(得分:6)

如果你想要对每条路线采取不同的行为,那么正确的做法就是创建两个函数处理程序。

@app.route("/antitop/")
@requires_auth
def top():
    ...

@app.route("/top/")
@requires_auth
def anti_top():
    ...

在某些情况下,您的结构是有道理的。您可以为每条路线设置值。

@app.route("/antitop/", defaults={'_route': 'antitop'})
@app.route("/top/", defaults={'_route': 'top'})
@requires_auth
def show_top(_route):
    # use _route here
    ...

答案 3 :(得分:0)

在我看来,如果你有一个重要的情况,你不应该首先使用相同的功能。将其拆分为两个独立的处理程序,每个处理程序都为共享代码调用一个共同的小说。