python - 从装饰器内部获取路由值

标签 python flask decorator python-decorators

在 Flask 中,如何在装饰器内获取路由值(例如“/admin”)?我需要根据使用的路由将某些字符串传递给数据库(并且它们都使用相同的装饰器)。

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

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

最佳答案

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

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)

关于python - 从装饰器内部获取路由值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458780/

相关文章:

python - 如何在 Django 中创建装饰器来装饰 View

python - 标准化的 numpy/scipy `asarray` 装饰器

python - 如何获取TensorFlow层中的神经元数量?

python - 如何在Python中实现良好的移动平均线

python - 使文件处理代码与 asyncio 兼容

python - 使用 Flask 蓝图解决此循环导入错误的正确方法是什么?

python-3.x - 如何对部署在 AWS 上的 Flask 应用程序进行 50 次并发调用?

python - 方法的装饰器参数不能是基于类的静态成员的列表理解

python - 如何通过管道将子进程调用传递给文本文件?

python - 无法从 Flask-WTF 导入 FlaskForm