从装饰器内获取路线值

时间:2018-01-26 09:39:41

标签: python flask decorator python-decorators

在Flask中,如何在装饰器中获得路线值(例如'/ admin')?我需要将某些字符串传递给DB,具体取决于使用的路径(并且它们都使用相同的装饰器)。

@app.route('/admin')
@decorator
def admin(data):
     do_something(data)

我无法找到有关如何在Python中执行此操作的信息。有可能吗?

1 个答案:

答案 0 :(得分:1)

你可以定义一个新的装饰器,它获取当前的路径路径,然后用它做一些事情:

from functools import wraps
from flask import request

def do_st_with_path(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        path = request.path
        do_anything_with_path(path)
        return f(*args, **kwargs)
    return decorated_function

对于每条路线,将此装饰器添加为第二个:

@app.route('/admin')
@decorator
def admin(data):
     do_something(data)

不添加新装饰器的另一种解决方案:使用before_request。在每次请求之前,您还可以检查路径路径:

@app.before_request
def before_request():
    path = request.path
    do_anything_with_path(path)