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.
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:
The Mezzanine admin dashboard:
Mezzanine makes use of as few libraries as possible (apart from a standard Django environment), with the following dependencies:
Users on Debian or Ubuntu will require some system packages to support the imaging library:
$ apt-get install libjpeg8 libjpeg8-dev $ apt-get build-dep python-imaging
OSX users can do the same via Homebrew:
$ brew install libjpeg
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 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 command 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.
createdb will also install some demo content, such as a contact form and image gallery. If you’d like to omit this step, use the --nodata option with createdb.
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:
If you want to do development with mezzanine, here’s a quick way to set up a development environment and run the unit tests, using virtualenvwrapper to set up a virtualenv:
$ mkvirtualenv mezzanine $ workon mezzanine $ pip install Django pep8 pyflakes $ git clone https://github.com/stephenmcd/mezzanine/ $ cd mezzanine $ python setup.py develop $ cp mezzanine/project_template/local_settings.py.template mezzanine/project_template/local_settings.py $ ./mezzanine/project_template/manage.py test
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. You can also add modules to the Mezzanine Grid on djangopackages.com.
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 firstname.lastname@example.org. This gives us a chance to fix the issue and create an official release prior to the issue being made public.
For all other Mezzanine support, the primary channel is the mezzanine-users mailing list. Questions, comments, and all related discussions take place here amongst knowledgeable members of the community.
If you’re certain you’ve come across a bug, then please use the GitHub issue tracker. It’s crucial that enough information is provided to reproduce the bug. This includes things such as the Python stack trace generated by error pages, as well as other aspects of the development environment used, such as operating system, database, Python version, etc. If you’re not sure you’ve found a reproducable bug, then please try the mailing list first.
Communications in all Mezzanine spaces are expected to conform to the Django Code of Conduct.