在Flask中,当我有多个相同功能的路线时, 我怎么知道目前使用哪条路线?
例如:
@app.route("/antitop/")
@app.route("/top/")
@requires_auth
def show_top():
....
我怎么知道,现在我使用/top/
或/antitop/
来电话?
更新
我知道request_path
我不想使用它,因为请求可能相当复杂,我想在函数中重复路由逻辑。我认为url_rule
解决方案是最好的解决方案。
答案 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)
在我看来,如果你有一个重要的情况,你不应该首先使用相同的功能。将其拆分为两个独立的处理程序,每个处理程序都为共享代码调用一个共同的小说。