У меня уже есть существующий сайт Django. Я добавил новый URL-адрес/блог/, где я хотел бы иметь блог Mezzanine. Если возможно установить Mezzanine в качестве приложения на существующем сайте Django, а не в автономном блочном приложении.
Как установить Mezzanine в качестве приложения Django?
Ответ 1
Если вы похожи на меня, вы обнаружите, что в FAQ часто не хватает описания того, как заставить Mezzanine работать как приложение. Итак, вот что я сделал (после болезненного полдня взлома), чтобы интегрировать его (несколько):
- Загрузите репо и скопируйте его в свой проект
- Запустите setup.py для пакета
-
cd
в пакет и запустите команду mezzanine для создания нового приложения (mezzanine-project <project name>
), скажем, вы используете имяblog
как ваш<project_name>
. - В файле
local_settings.py
илиsettings.py
установитеDATABASES
dict для использования базы данных проекта. - Запустите команду
createdb
из файла mezzaninemanage.py
Теперь пришло время запустить хакер-фест:
- В файле настроек проекта .py добавьте
blog
вINSTALLED_APPS
- Добавьте некоторые параметры конфигурации в settings.py, которые ожидают Mezzanine:
PACKAGE_NAME_FILEBROWSER = "filebrowser_safe" PACKAGE_NAME_GRAPPELLI = "grappelli_safe" GRAPPELLI_INSTALLED = False ADMIN_REMOVAL = [] RATINGS_RANGE = range(1, 5) TESTING = False BLOG_SLUG = '' COMMENTS_UNAPPROVED_VISIBLE = True COMMENTS_REMOVED_VISIBLE = False COMMENTS_DEFAULT_APPROVED = True COMMENTS_NOTIFICATION_EMAILS = ",".join(ALL_EMAILS) COMMENT_FILTER = None
- Добавьте некоторое промежуточное программное обеспечение, которое ожидает Mezzanine:
`` `` `
...
"Mezzanine.core.request.CurrentRequestMiddleware",
"Mezzanine.core.middleware.RedirectFallbackMiddleware",
"Mezzanine.core.middleware.TemplateForDeviceMiddleware",
"Mezzanine.core.middleware.TemplateForHostMiddleware",
"Mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware",
"Mezzanine.core.middleware.SitePermissionMiddleware",
Разобейте следующее, если вы используете какие-либо настройки SSL:
"mezzanine.core.middleware.SSLRedirectMiddleware",
"Mezzanine.pages.middleware.PageMiddleware", .... `` `` ` - Добавьте некоторые INSTALLED_APPS, которые ожидают Mezzanine:
.... "mezzanine.boot", "mezzanine.conf", "mezzanine.core", "mezzanine.generic", "mezzanine.blog", "mezzanine.forms", "mezzanine.pages", "mezzanine.galleries", "mezzanine.twitter", ....
- Добавьте ссылки на папки шаблонов
mezzanine
на ваш кортежTEMPLATE_DIRS
os.path.join(BASE_PARENT, '<path to mezzanine>/mezzanine/mezzanine'), os.path.join(BASE_PARENT, '<path to mezzanine>/mezzanine/mezzanine/blog/templates'),
- Наконец, если вы, как и я, вам придется переопределить некоторые из путей
extends
в мезонинных шаблонах, наиболее очевидное в "blog_post_list.html", которое просто расширяетbase.html
, вместо этого вы хотите расширьте специфический для мезонина файлbase
. Поэтому перейдите к этому файлу и замените{% extends "base.html" %}
на{% extends "core/templates/base.html" %}
.
Ответ 2
Это описано в FAQ:
TL;DR: Mezzanine добавляет несколько настроек, приложений, промежуточного программного обеспечения и контекстных процессоров, все из которых определены в файле settings.py по умолчанию. Вам просто нужно извлечь из них достаточно, в зависимости от ваших потребностей.