Search code examples
pythonurlflask

Flask: get current route


In Flask, when I have several routes for the same function, how can I know which route is used at the moment?

For example:

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

How can I know, that now route was called using /top/ or /antitop/?

UPDATE

I know about request.path I don't want use it, because the request can be rather complex, and I want repeat the routing logic in the function. I think that the solution with url_rule it the best one.


Solution

  • the most 'flasky' way to check which route triggered your view is, by 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'