【问题标题】:Django-CMS plugin not appearingDjango-CMS 插件没有出现
【发布时间】:2011-10-09 21:28:32
【问题描述】:

我正在部署一个 Django 网站。我在计算机上使用的所有自定义插件(我可以从下拉列表中将它们添加到模板块中。)但是当我将代码推送到站点时,并非所有插件都可用。

创建了数据库表,如果我导入plugin_pool 并调用discover_plugins() 然后get_all_plugins() 插件都会出现。所以我的问题是,为什么我的插件没有显示?有什么想法吗?

【问题讨论】:

  • 你能推荐一些吗?我真的不知道从哪里开始寻找 django-cms。

标签: django django-cms


【解决方案1】:

您的应用是否带有INSTALLED_APPS 中的插件(cms_plugins.py 文件)?

是否有models.py(可能为空)文件?

使用python manage.py shell时可以导入cms_plugins.py文件吗?

最常见的问题是 cms_plugins.py 文件中的导入错误

【讨论】:

  • 是的,是的,是的:(我已经放弃了,只是解决了这个问题。
  • 确保您可以从 shell 导入 cms_plugins.py。请注意,INSTALLED_APPS 列表只会检查模型,而不是 cms_plugins,因此即使cms_plugins.py 出现错误,服务器也会加载。当 CMS 插件列表尝试导入 cms_plugins.py 时,出现错误,它不会发出警告或记录,它会简单地忽略。因此,打开外壳并找出错误所在。这解决了我的问题。
【解决方案2】:

我在关注 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 作为模型时,插件在页面结构编辑器中不可见。

尽管插件是:

  1. 在项目INSTALLED APPS 中列出的应用程序的根目录中
  2. 该应用有一个 models.py 文件(但插件未使用任何这些模型)
  3. cms_plugins.py 文件可以从 django shell 导入

尝试 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

就像魔术一样,该插件随后被列在页面结构编辑器的“通用”下。

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 2017-04-22
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多