Плагин Django-CMS не отображается - PullRequest
3 голосов
/ 21 июля 2011

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

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

Ответы [ 2 ]

4 голосов
/ 08 августа 2011

Ваше приложение с плагином (cms_plugins.py файл) в INSTALLED_APPS?

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

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

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

3 голосов
/ 27 декабря 2014

Я столкнулся с этой проблемой, следуя базовому примеру для 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

Как и магия, плагин был добавлен в список «Общие» в редакторе структуры страницы.

...