将装饰和包装的函数导入烧瓶中的蓝图

问题描述 投票:0回答:1

我有一个login_required弃用的函数,用于管理页面访问。

我的整个Flask项目均采用蓝图结构。只有主要内容在app.py中。因此,我已将loqin_requiered函数放到app.py中,现在想在我的蓝图文件中使用它。

app.py

from blueprint1 import blueprint_function1
app.register_blueprint(blueprint_function1)
def login_required(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        if "logged_in" in session:
            return f(*args, **kwargs)
        else:
            flash("Bu Sayfayi görüntülemek icin lütfen giris yapin", category="danger")
            return redirect(url_for("login"))
    return decorated_function

在我的blueprint1.py中,我执行以下操作:

from app import loqin_required

然后出现以下错误:ImportError:无法导入名称“ blueprint_function1”

如何在其他文件中使用此修饰器?

python flask decorator python-decorators
1个回答
0
投票

您导入blueprint1.py中必需的login _ ::>

from app import login_required

现在您还可以在app.py中导入blueprint1:

from blueprint1 import blueprint_function1

这两个模块相互导入,将导致Python Circular Dependency

要解决此问题,您只需创建一个新模块来存储您的装饰器。例如,除了app.py之外,创建一个decorators.py模块。然后在blueprint1.py中更改import语句:

from decorators import login_required
© www.soinside.com 2019 - 2024. All rights reserved.