How do I install Mezzanine as a Django app?
If you are like me, you will find that the FAQ is sorely lacking in its description of how to get Mezzanine working as an app. So here is what I did (after a painful half day of hacking) to get it integrated (somewhat):
- Download the repo and copy it into your project
- Run setup.py for the package
cd
to the package and run the mezzanine command to create a new app (mezzanine-project <project name>
), let's say you use the nameblog
as your<project_name>
.- In either the
local_settings.py
orsettings.py
file, set theDATABASES
dict to use your project's database. - Run the
createdb
command from the mezzaninemanage.py
file
Now it's time to start the hack-fest:
- In your project's settings.py file, add
blog
toINSTALLED_APPS
- Add some configuration variables to settings.py that Mezzanine is expecting:
PACKAGE_NAME_FILEBROWSER = "filebrowser_safe"PACKAGE_NAME_GRAPPELLI = "grappelli_safe"GRAPPELLI_INSTALLED = FalseADMIN_REMOVAL = []RATINGS_RANGE = range(1, 5)TESTING = FalseBLOG_SLUG = ''COMMENTS_UNAPPROVED_VISIBLE = TrueCOMMENTS_REMOVED_VISIBLE = FalseCOMMENTS_DEFAULT_APPROVED = TrueCOMMENTS_NOTIFICATION_EMAILS = ",".join(ALL_EMAILS)COMMENT_FILTER = None
- Add some middleware that Mezzanine is expecting:````..."mezzanine.core.request.CurrentRequestMiddleware","mezzanine.core.middleware.RedirectFallbackMiddleware","mezzanine.core.middleware.TemplateForDeviceMiddleware","mezzanine.core.middleware.TemplateForHostMiddleware","mezzanine.core.middleware.AdminLoginInterfaceSelectorMiddleware","mezzanine.core.middleware.SitePermissionMiddleware",
Uncomment the following if using any of the SSL settings:
"mezzanine.core.middleware.SSLRedirectMiddleware",
"mezzanine.pages.middleware.PageMiddleware",....```` - Add some INSTALLED_APPS that Mezzanine is expecting:
...."mezzanine.boot","mezzanine.conf","mezzanine.core","mezzanine.generic","mezzanine.blog","mezzanine.forms","mezzanine.pages","mezzanine.galleries","mezzanine.twitter",....
- Add references to the template folders of
mezzanine
to yourTEMPLATE_DIRS
tupleos.path.join(BASE_PARENT, '<path to mezzanine>/mezzanine/mezzanine'),os.path.join(BASE_PARENT, '<path to mezzanine>/mezzanine/mezzanine/blog/templates'),
- Finally, if your like me, you'll have to override some of the
extends
paths in the mezzanine templates, the most obvious being in "blog_post_list.html" which just extendsbase.html
, instead you want it to extend the mezzanine specificbase
file. So go to that file and replace the{% extends "base.html" %}
with{% extends "core/templates/base.html" %}
.
This is covered in the FAQs:
TLDR: Mezzanine adds a handful of settings, apps, middleware and context processors, all defined in its default settings.py file - you just need to extract enough of those, depending on your needs.