#django #integration #django-cms #django-grappelli
#django #интеграция #django-cms #django-grappelli
Вопрос:
Если кто-нибудь знает, как заставить django-cms работать с grappelli, пожалуйста, дайте несколько советов
Ответ №1:
Что ж, я только что пережил довольно эпическое приключение, история которого может быть вам чем-то полезна. Конечной целью упомянутого приключения было заставить django-cms 2.1.3 работать с django-filebrowser-no-grappelli . Хотя на самом деле это может звучать как противоположность тому, что вы хотите, я оказался там, потому что на самом деле я хотел заставить django-cms работать с filebrowser. Однако без grappelli стандартный django-filebrowser работает не так, как ожидалось. Но с grappelli django-cms работает не так, как ожидалось. Итак, в этом и заключается загвоздка, цитируя Шекспира. Заставить django-cms работать с filebrowser было относительно просто, за исключением того факта, что при попытке загрузить файлы с помощью uploadify (который поставляется с filebrowser) после выбора файлов в диалоговом окне file ничего не произошло. В конце концов я выяснил, что это произошло из-за того, что библиотека jquery загружалась дважды: один раз filebrowser для использования с uploadify и один раз django-cms. Итак, закомментировав вторую строку в этом файле:
пакеты вашего сайта dir/cms/templates/cms/toolbar/toolbar.html
который загружает jquery.min.js uploadify сработал так, как ожидалось. Тааак … если вы просто хотите заставить django-cms работать с grappelli, чтобы вы могли использовать filebrowser, вышесказанное может быть полезным. Вот мой файл настроек для справки.
Комментарии:
1. спасибо за ваш ответ. как по мне, файловый браузер не повод использовать grappelli ;). хотя я однажды столкнулся с этой проблемой. не могу сказать, что это было довольно эпическое приключение 🙂 но потребовалось некоторое время, чтобы это исправить. Итак, я хочу использовать grappelli только для его гладкого пользовательского интерфейса.
2. Ну да, просто потребовалось некоторое время, чтобы исправить, потому что ошибок javascript как таковых не было, поэтому отлаживать было сложнее. Но мне только что пришло в голову, что основной причиной того, что uploadify не работает из-за того, что jquery загружается дважды, является тот факт, что панель инструментов django-cms отображалась в интерфейсе администратора, но только в окне filebrowser. Я подозреваю, что панель инструментов может даже не отображаться, когда вы находитесь в admin. Таким образом, лучшим решением могло бы быть выяснить, почему панель инструментов отображается в первую очередь, а затем остановить это. В любом случае, дайте нам знать, как у вас идут дела с django-cms grappelli…
3. Просто обновление вышесказанного .. панель инструментов django-cms отображалась, потому что я ошибочно включил URL (r’^filebrowser /’, include(‘filebrowser.urls’)) в дополнение к URL(r’^admin/filebrowser /’, include(‘filebrowser.urls’)). Все, что мне было нужно, — это последнее. Однако я обнаружил аналогичную проблему с TinyMCE и filebrowser и панелью инструментов django-cms, о которой я начал обсуждение здесь
Ответ №2:
Мое решение состоит в реализации 2 поддоменов, ‘www’ и ‘cms’, в каждом из которых запущен отдельный экземпляр сайта Django с другим STATIC_ROOT и измененным INSTALLED_APPS. grappelli работает в поддомене ‘www’. Он не запущен в поддомене ‘cms’, так что вы можете использовать django-cms там.
-
Настройка поддомена:
cms.example.com
-
Измените свой веб-сервер, чтобы он обслуживал этот поддомен. Используйте те же настройки, что и на вашем основном сайте django, но укажите на другой обработчик скрипта. например, при использовании wsgi направьте сервер на запуск
wsgi_cms.py
-
cp wsgi.py wsgi_cms.py
. Отредактируйтеwsgi_cms.py
и измените строкуos.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
Дляos.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings_cms")
-
settings_cms.py
:
:
from settings import *
INSTALLED_APPS.remove('grappelli.dashboard')
INSTALLED_APPS.remove('grappelli')
STATIC_ROOT = os.path.join('/what/ever/static_cms/')
STATIC_URL = '/static_cms/'
ADMIN_MEDIA_PREFIX = STATIC_URL 'admin/`
-
изменить
settings.py
: преобразоватьINSTALLED_APPS
из кортежа в список -
перезагрузите веб-серверы
-
./manage.py collectstatic --settings=myproject.settings_cms
-
ваш обычный сайт работает в обычном режиме. Чтобы отредактировать страницы django-cms с отключенным grappelli, перейдите на http://cms.example.com/admin/cms/page
Комментарии:
1. Приводит ли это решение к использованию django-cms С оболочкой grappelli? Обычно grappelli работает с django-cms до тех пор, пока вы не начнете редактировать страницы…
2. нет, извините, если мой ответ был непонятен. мое решение создает 2 домена — www.example.com который использует grappelli в admin, и cms.example.com которая имеет обычный интерфейс администратора django. Поскольку весь смысл django-cms заключается в редактировании страниц, и поскольку grappelli нарушает это, я не согласен с тем, что «Обычно grappelli работает с django-cms».
Ответ №3:
Я когда-то создавал форк django-cms на github, который поддерживает grappelli, он немного устарел, но, возможно, поможет вам начать или, вероятно, вы хотели бы внести свой вклад.
Комментарии:
1. можно ли не форкать django-cms, а создать отдельное приложение?
2. конечно, это так. я имею в виду автономный в немного другом смысле. например, вам не нужно разветвлять contrib.admin, чтобы использовать grappelli, верно? грубо говоря, это независимое приложение, работающее поверх contrib.admin. вы можете иметь или не иметь его в INSTALLED_APPS, пока contrib.admin все еще работает. и, я думаю, так оно и есть в django. итак, мой вопрос был о создании приложения таким образом.