Плагин Django-CMS не отображается

Я развертываю веб-сайт Django. Все пользовательские плагины, которые у меня есть, работают на моем компьютере (я могу добавить их в блок шаблонов из раскрывающегося списка), но когда я выкладываю код на сайт, не все плагины доступны.

Таблицы базы данных созданы, и если я импортирую plugin_pool и вызову discover_plugins(), а затем get_all_plugins(), все плагины появятся. Итак, мой вопрос: почему мои плагины не отображаются? Есть идеи?


person Brian Hicks    schedule 21.07.2011    source источник
comment
Не могли бы вы предложить некоторые? Я действительно не знаю, с чего начать поиск django-cms для этого.   -  person Brian Hicks    schedule 22.07.2011


Ответы (2)


Ваше приложение с подключаемым модулем (cms_plugins.py файл) находится в INSTALLED_APPS?

Есть ли у него файл models.py (который может быть пустым)?

Можно ли импортировать файл cms_plugins.py при использовании python manage.py shell?

Наиболее распространенная проблема — ошибки импорта в файле cms_plugins.py.

person ojii    schedule 08.08.2011
comment
да, да и да :( Я сдался и просто решил проблему. - person Brian Hicks; 08.08.2011
comment
Убедитесь, что вы можете импортировать cms_plugins.py из оболочки. Обратите внимание, что список INSTALLED_APPS будет проверять только модели, а не cms_plugins, поэтому сервер загружается даже с ошибкой в ​​cms_plugins.py. Когда список подключаемых модулей CMS пытается импортировать cms_plugins.py и возникает ошибка, он не будет предупреждать или регистрировать это, он просто проигнорирует. Итак, выломайте оболочку и выясните, где ошибка. Это решило мою проблему. - person film42; 06.12.2013

Я столкнулся с этой проблемой при выполнении базового примера для Django CMS 3. В примере предполагается, что следующий код будет работать (с соответствующим шаблоном):

#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.

Попробуйте импорт оболочки django, как указано на странице примера:

$ 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

Как по волшебству, плагин был затем указан в разделе «Универсальный» в редакторе структуры страницы.

person James Fletcher    schedule 27.12.2014