将装饰和包装功能导入Flask中的蓝图

2024-09-30 10:42:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个登录所需的装饰功能,以管理页面访问

我的整个烧瓶项目都在蓝图中。app.py中只有主要内容。因此,我已将loqin_required函数应用于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\u function1”

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


Tags: 文件frompyimportappreturndefrequired
1条回答
网友
1楼 · 发布于 2024-09-30 10:42:03

在blueprint1.py中导入所需的登录名:

from app import login_required

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

from blueprint1 import blueprint_function1

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

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

from decorators import login_required

相关问题 更多 >

    热门问题