Mezzanine is a content management platform built using the Django framework. It is BSD licensed and designed to provide both a consistent interface for managing content, and a simple, extensible architecture that makes diving in and hacking on the code as easy as possible.
Mezzanine resembles tools like Wordpress, with an intuitive interface for managing pages, blog posts, form data, store products, or any other type of content you can imagine. Mezzanine takes a different approach from other Django applications in this space like Pinax or Mingus that glue together a lot of reusable apps, instead opting to provide most of its functionality included with the project by default.
Visit the Mezzanine project page to see some of the great sites people have built using Mezzanine.
On top of all the usual features provided by Django such as MVC architecture, ORM, templating, caching and the automatic admin interface, Mezzanine provides the following features:
- Hierarchical page navigation
- Save as draft and preview on site
- Scheduled publishing
- Drag-n-drop page ordering
- WYSIWYG editing
- In-line page editing
- Drag-n-drop HTML5 forms builder with CSV export
- Custom templates per page or blog post
- Twitter Bootstrap integration
- API for custom content types
- SEO friendly URLs and meta data
- Search engine and API
- Configurable dashboard widgets
- Multi-device detection and template handling
- Shopping cart module (Cartridge)
- Blogging engine
- Tagging
- One step migration from other blogging engines
- Disqus integration or built-in threaded comments
- Gravatar integration
- Google Analytics integration
- Twitter feed integration
- bit.ly integration
- Sharing via Facebook or Twitter
- Built-in test suite
The Mezzanine admin dashboard:
Mezzanine has no explicit dependencies apart from a standard Django environment using:
Mezzanine is designed however to be used most effectively in conjunction with the following libraries:
- Python Imaging Library (PIL)
- grappelli-safe (Mezzanine's fork of Grappelli)
- filebrowser-safe (Mezzanine's fork of FileBrowser)
- South
- pyflakes and pep8 (required for running the test suite)
Mezzanine's admin interface works with all modern browsers. Internet Explorer 7 and earlier are generally unsupported.
The easiest method is to install directly from pypi using pip or setuptools by running the respective command below, which will also attempt to install the dependencies mentioned above:
$ pip install -U mezzanine
or:
$ easy_install -U mezzanine
Otherwise you can download Mezzanine and install it directly from source:
$ python setup.py install
Once installed, the command mezzanine-project
should be available which
can be used for creating a new Mezzanine project in a similar fashion to
django-admin.py
:
$ mezzanine-project project_name
You can then run your project with the usual Django steps:
$ cd project_name $ python manage.py createdb --noinput $ python manage.py runserver
Note
The createdb
is a shortcut for using Django's syncdb
command and
setting the initial migration state for South. You can alternatively
use syncdb
and migrate
if preferred.
You should then be able to browse to http://127.0.0.1:8000/admin/ and log
in using the default account (username: admin, password: default
). If
you'd like to specify a different username and password during set up, simply
exclude the --noinput
option included above when running createdb
.
Mezzanine is structured as a regular Django project, and as such allows you to add other third party Django apps to your Mezzanine project as required. Inversely, you can add Mezzanine to an existing project by copying the relevant parts from Mezzanine's project_template package:
- Settings defined in the
settings
module.- URL patterns defined in the
urls
module.
Take the time to look over Mezzanine's project_template.settings
module,
as it contains many optional settings commented out. Of particular note when
integrating with an existing project are the following:
INSTALLED_APPS
TEMPLATE_CONTEXT_PROCESSORS
MIDDLEWARE_CLASSES
PACKAGE_NAME_*
(for django-grappelli and django-filebrowser integration)- The call to
mezzanine.utils.conf.set_dynamic_settings
at the very end of thesettings
module.
Mezzanine is an open source project that is managed using both Git and Mercurial version control systems. These repositories are hosted on both GitHub and Bitbucket respectively, so contributing is as easy as forking the project on either of these sites and committing back your enhancements.
Please note the following points around contributing:
- Contributed code must be written in the existing style. This is as simple as following the Django coding style and most importantly PEP 8.
- Contributions must be available on a separately named branch that is based on the latest version of the main branch.
- Run the tests before committing your changes. If your changes causes the tests to break, they won't be accepted.
- If you're adding new functionality, you must include basic tests and documentation.
The following modules have been developed outside of Mezzanine. If you have developed a module to integrate with Mezzanine and would like it listed here, send an email to the mezzanine-users mailing list.
- mezzanine-html5boilerplate - Integrates the html5boilerplate project into Mezzanine.
- mezzanine-mdown - Adds Markdown support to Mezzanine's rich text editor.
- mezzanine-openshift Setup for running Mezzanine on Redhat's OpenShift cloud platform.
- mezzanine-stackato Setup for running Mezzanine on ActiveState's Stackato cloud platform.
If you would like to make a donation to continue development of the project, you can do so via the Mezzanine Project website.
For general questions or comments, please join the mezzanine-users mailing list. To report a bug or other type of issue, please use the GitHub issue tracker.
- Citrus Agency
- Mezzanine Project
- Nick Hagianis
- Thomas Johnson
- Central Mosque Wembley
- Ovarian Cancer Research Foundation
- The Source Procurement
- Imageinary
- Brad Montgomery
- Jashua Cloutier
- Alpha & Omega Contractors
- Equity Advance
- Head3 Interactive
- PyLadies
- Ripe Maternity
- Cotton On
- List G Barristers
- Tri-Cities Flower Farm
- daon.ru
- autoindeks.ru
- immiau.ru
- ARA Consultants
- Boîte à Z'images
- The Melbourne Cup
- Diablo News
- Goldman Travel
- IJC Digital
- Coopers
- Joe Julian
- Sheer Ethic
- Salt Lake Magazine
- Boca Raton Magazine
- Photog.me
- Elephant Juice Soup
- National Positions
- Like Humans Do
- "I'm enjoying working with Mezzanine, it's good work" - Van Lindberg, engineer, IP lawyer for the Python Software Foundation
- "Mezzanine looks like it may be Django's killer app" - Antonio Rodriguez, ex CTO of Hewlett Packard, founder of Tabblo
- "Mezzanine looks pretty interesting, tempting to get me off Wordpress" - Jesse Noller, Python core contributor, Python Software Foundation board member
- "Mezzanine is amazing" - Audrey Roy, founder of PyLadies and Django Packages
- "Mezzanine convinced me to switch from the Ruby world over to Python" - Michael Delaney, developer
- "Impressed with Mezzanine so far" - Brad Montgomery, founder of Work For Pie
- "From the moment I installed Mezzanine, I have been delighted, both with the initial experience and the community involved in its development" - John Campbell, founder of Head3 Interactive
- "You need to check out the open source project Mezzanine. In one word: Elegant" - Nick Hagianis, developer
- "Who came up with the name Mezzanine? I love it, like a platform between the client's ideas and their published website. Very classy!" - Stephen White, developer