Created by Stephen McDonald
Mezzanine is a powerful, consistent, and flexible content management platform. Built using the Django framework, Mezzanine provides a simple yet highly extensible architecture that encourages diving in and hacking on the code. Mezzanine is BSD licensed and supported by a diverse and active community.
In some ways, Mezzanine resembles tools such as Wordpress that provide an intuitive interface for managing pages, blog posts, form data, store products, and other types of content. But Mezzanine is also different. Unlike many other platforms that make extensive use of modules or reusable applications, Mezzanine provides most of its functionality by default. This approach yields a more integrated and efficient platform.
Visit the Mezzanine project page to see some of the great sites people have built using Mezzanine.
In addition to the usual features provided by Django such as MVC architecture, ORM, templating, caching and an automatic admin interface, Mezzanine provides the following:
- Hierarchical page navigation
- Save as draft and preview on site
- Scheduled publishing
- Drag-and-drop page ordering
- WYSIWYG editing
- In-line page editing
- Drag-and-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
- Seamless integration with third-party Django apps
- Multi-device detection and template handling
- Shopping cart module (Cartridge)
- Blog engine
- One step migration from other blogging engines
- Automated production provisioning and deployments
- Disqus integration, or built-in threaded comments
- Gravatar integration
- Google Analytics integration
- Twitter feed integration
- bit.ly integration
- Akismet spam filtering
- Sharing via Facebook or Twitter
- Built-in test suite
- User accounts and profiles with email verification
- Translated to over 20 languages
The Mezzanine admin dashboard:
Mezzanine makes use of as few libraries as possible (apart from a standard Django environment), with the following dependencies:
- Python 2.5 ... 2.7
- Django 1.3 ... 1.4
- Python Imaging Library - for image resizing
- grappelli-safe - admin skin (Grappelli fork)
- filebrowser-safe - for managing file uploads (FileBrowser fork)
- bleach - for sanitizing markup in content
- pytz - for timezone support
- South - for database migrations (optional)
- django-compressor - for merging JS/CSS assets (optional)
- pyflakes and pep8 - for running the test suite (optional)
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 by running the command below, which will also install the required dependencies mentioned above:
$ pip install -U mezzanine
If you prefer, you can download Mezzanine and install it directly from source:
$ python setup.py install
Once installed, the command mezzanine-project can be used to create a new Mezzanine project in similar fashion to django-admin.py:
$ mezzanine-project project_name $ cd project_name $ python manage.py createdb --noinput $ python manage.py runserver
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. South is automatically added to INSTALLED_APPS if the USE_SOUTH setting is set to True.
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.
For information on how to add Mezzanine to an existing Django project, see the FAQ section of the documentation.
Mezzanine is an open source project managed using both the 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 guidelines for 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 based on the latest version of the main branch.
- Run the tests before committing your changes. If your changes cause the tests to break, they won't be accepted.
- If you are adding new functionality, you must include basic tests and documentation.
Mezzanine makes full use of translation strings, which allow Mezzanine to be translated into multiple languages using Django's internationalization methodology. Translations are managed on the Transiflex website but can also be submitted via GitHub or Bitbucket. Consult the documentation for Django's internationalization methodology for more information on creating translations and using them.
The following modules have been developed outside of Mezzanine. If you have developed a module to integrate with Mezzanine and would like to list it 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.
- mezzanine-blocks - A Mezzanine flavored fork of django-flatblocks.
- mezzanine-widgets - Widget system for Mezzanine.
- mezzanine-themes - A collection of Django/Mezzanine templates.
- mezzanine-twittertopic - Manage multiple Twitter topic feeds from the Mezzanine admin interface.
If you would like to make a donation to continue development of Mezzanine, you can do so via the Mezzanine Project website.
To report a security issue, please send an email privately to email@example.com. This gives us a chance to fix the issue and create an official release prior to the issue being made public.
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. And feel free to drop by the #mezzanine IRC channel on Freenode, for a chat.
Sites Using Mezzanine
- Citrus Agency
- Mezzanine Project
- Nick Hagianis
- Thomas Johnson
- Central Mosque Wembley
- Ovarian Cancer Research Foundation
- The Source Procurement
- Brad Montgomery
- Jashua Cloutier
- Alpha & Omega Contractors
- Equity Advance
- Head3 Interactive
- Ripe Maternity
- Cotton On
- List G Barristers
- Tri-Cities Flower Farm
- ARA Consultants
- Boîte à Z'images
- The Melbourne Cup
- Diablo News
- Goldman Travel
- IJC Digital
- Joe Julian
- Sheer Ethic
- Salt Lake Magazine
- Boca Raton Magazine
- Elephant Juice Soup
- National Positions
- Like Humans Do
- Connecting Countries
- Environmental World Products
- Ross A. Laird
- Etienne B. Roesch
- Mod Productions
- Pink Twig
- "I'm enjoying working with Mezzanine, it's good work" - Van Lindberg, Python Software Foundation chairman
- "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
- "I think I'm your newest fan. Love these frameworks" - Emile Petrone, integrations engineer at Urban Airship
- "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