我正在部署Django网站。我在计算机上运行的所有自定义插件(我可以从下拉列表中将它们添加到模板块中。)但是当我将代码推送到站点时,并非所有插件都可用。
创建了数据库表,如果我导入plugin_pool
并调用discover_plugins()
然后get_all_plugins()
,则会显示所有插件。所以我的问题是,为什么我的插件不显示?有什么想法吗?
答案 0 :(得分:4)
您的应用是否包含cms_plugins.py
中的插件(INSTALLED_APPS
文件)?
是否有models.py
(可能为空)文件?
使用cms_plugins.py
时可以导入python manage.py shell
文件吗?
最常见的问题是cms_plugins.py文件中的导入错误
答案 1 :(得分:3)
我在关注Django CMS 3的basic example时遇到了这个问题。该示例表明以下代码可以使用(使用相关模板):
#cms_plugins.py
from cms.models.pluginmodel import CMSPlugin
class HelloPlugin(CMSPluginBase):
model = CMSPlugin
render_template = "hello_plugin.html"
plugin_pool.register_plugin(HelloPlugin)
但是,我发现当使用CMSPlugin
作为模型时,插件在页面结构编辑器中不可见。
尽管插件是:
INSTALLED APPS
models.py
个文件(但该插件未使用任何此类型号)cms_plugins.py
文件
醇>
尝试使用django shell导入,如示例页面所示:
$ python manage.py shell
>>> from django.utils.importlib import import_module
>>> m = import_module("myapp.cms_plugins")
解决方案是使用models.py
文件中定义的模型,该文件扩展了CMSPlugin:
#cms_plugins.py
from .models import MyModel
class HelloPlugin(CMSPluginBase):
model = MyModel
render_template = "hello_plugin.html"
plugin_pool.register_plugin(HelloPlugin)
# models.py
class MyModel(CMSPlugin):
pass
与魔术一样,该插件随后列在页面结构编辑器的“Generic”下。