2013-03-27 1 views
14

У меня уже есть существующий сайт Django. Я добавил новый URL-адрес/блог /, где я хотел бы иметь блог Mezzanine. Если возможно установить Mezzanine в качестве приложения на существующем сайте Django, а не в автономном блочном приложении.Как установить Mezzanine в качестве приложения Django?

+0

Я пробовал это совсем немного, не повезло; хотелось бы знать, как этого добиться. Мезонин - это CMS, и он имеет свой единственный сервер-сервер и т. Д. Я считаю, что это невозможно. – karthikr

ответ

5

Это описано в разделе часто задаваемых вопросов:

http://mezzanine.jupo.org/docs/frequently-asked-questions.html#how-can-i-add-mezzanine-to-an-existing-django-project

TLDR: Мезонин добавляет несколько настроек, приложений, промежуточного ПО и контекстных процессоров, все определенные в файле settings.py по умолчанию - вам просто нужно извлеките из них достаточно, в зависимости от ваших потребностей.

10

Если вы похожи на меня, вы обнаружите, что в FAQ часто не хватает описания того, как заставить Mezzanine работать как приложение. Так вот что я сделал (после болезненного половины дня взлома), чтобы получить его интегрировать (несколько):

  1. Скачать репозиторий и скопировать его в свой проект
  2. Run setup.py для пакета
  3. cd в пакет и запустите команду mezzanine для создания нового приложения (mezzanine-project <project name>), допустим, вы используете имя blog как ваш <project_name>.
  4. В файле local_settings.py или settings.py введите DATABASES dict, чтобы использовать базу данных своего проекта.
  5. Выполните команду createdb с мезонином manage.py файл

Теперь пришло время, чтобы начать хак-фест:

  1. В settings.py файл вашего проекта, добавьте blog к INSTALLED_APPS
  2. Добавьте некоторые переменные конфигурации в settings.py, которые ожидают мезонин: 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
  3. Добавьте промежуточное программное обеспечение, что Мезонин ожидает: `` `` ` ... "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", .... `` ``
  4. Добавить некоторые INSTALLED_APPS что Мезонин ожидает: .... "mezzanine.boot", "mezzanine.conf", "mezzanine.core", "mezzanine.generic", "mezzanine.blog", "mezzanine.forms", "mezzanine.pages", "mezzanine.galleries", "mezzanine.twitter", ....
  5. Добавить ссылки на шаблон папки 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'),
  6. Наконец, если ваш, как я, вы должны будете переопределить некоторые из путей extends в мезонинных шаблонах, наиболее очевидное из которых находится в «blog_post_list.html», который просто расширяет base.html, вместо этого вы хотите, чтобы он расширил мезонин конкретным base. Поэтому перейдите к этому файлу и замените {% extends "base.html" %} на {% extends "core/templates/base.html" %}.
+0

Привет, я получаю эту проблему при запуске setup.py: 'из: не может читать/вар/почта/Setuptools из: не может читать/вар/почта/shutil из: не умеет читать/var/mail/mezzanine ./setup.py: строка 9: исключить: команда не найдена ./setup.py: строка 10: mezzanine/project_template/project_name/local_settings.py]: Нет такого файла или каталога ./ setup.py: строка 13: синтаксическая ошибка возле неожиданного токена (' ./setup.py: строка 13: exclude = dict ([(e, None) для e in exclude])' ' любые идеи? – vabada