gpt4 book ai didi

python - Flask-Admin:发生了蓝图的名称冲突...两者共享相同的名称 "admin"

转载 作者:行者123 更新时间:2023-12-01 08:23:34 27 4
gpt4 key购买 nike

我有一个 Flask 0.12.4 应用程序并且正在使用 Flask-Admin .

我在本地开发时间歇性地遇到此错误,并且刚刚开始在我们的公共(public)环境之一中看到它。

AssertionError: A blueprint's name collision occurred between 
<flask.blueprints.Blueprint object at 0x7f5cd31f96d0> and
<flask.blueprints.Blueprint object at 0x7f5cd33b0d90>.
Both share the same name "admin".
Blueprints that are created on the fly need unique names.

在我的开发环境中重现的步骤有点奇怪:

  1. 破坏一些管理配置(例如更改与 form_columns 中的列名称相关的字符串之一,使其引用不存在的名称)
  2. 刷新浏览器即可看到常规的“未知字段”错误
  3. 恢复更改
  4. 再次刷新浏览器 - 然后您会看到上面的蓝图错误

导致错误的行是这一行:

# admin.py
admin = flask_admin.Admin(
app, index_view=MyIndexView(), template_mode="bootstrap3"
)

最佳答案

似乎有问题的行被多次调用(尽管它所在的文件仅导入到一个位置)。我尝试在 Admin 构造函数中传递自定义端点,但继续收到相同的错误,但使用了新的端点名称,这表明情况确实如此。

This answer顺便提及同样的问题,以及使用 init_app 的解决方案而不是将 app 传递给构造函数。

这样做后,我的代码看起来像这样,错误就消失了:

# admin.py
# Notice I'm not passing app here any more.
admin = flask_admin.Admin(index_view=MyIndexView(), template_mode="bootstrap3")
# app.py
admin.init_app(app) # This line is new

我不明白问题是如何发生的细节,也不明白为什么会解决它,所以欢迎任何进一步的指示!

关于python - Flask-Admin:发生了蓝图的名称冲突...两者共享相同的名称 "admin",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54456922/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com