If you are using the most recent version of DJANGO, CMS1 will not work for you. please use CMS2

Download Django CMS 1

svn co http://svn.django-cms.org/trunk/cms cms

This gets the Django CMS code and puts it in a directory called 'cms'.

Download django-tinymce (optional)

TinyMCE is a rich text editor that Django CMS can use (and expects to find). We use the really nice django integration of this project

Follow the install instructions here.

Make sure you set CMS_USE_TINYMCE = True in your settings.py (continue to read).

Download django-filebrowser (optional)

django-filebrowser is a neat file browser with which you can browse your servers directories and upload files. TinyMCE editor will display a browse file button if django-filebrowser application is installed. You can add uploaded files as download links or add embedded images into your conent.

Follow the install instructions here.

Make some basic settings changes

settings.py

You need to edit your project's 'settings.py' file. Add:

    'cms',

to the INSTALLED_APPS list. You'll also need to add

'django.contrib.admin'

if it's not there already.

Similarly, add

'django.middleware.locale.LocaleMiddleware'

to MIDDLEWARE_CLASSES.

If you installed the tinymce or filebrowser add-ons before, also add them to the INSTALLED_APPS list:

    'tinymce',
    'filebrowser',

You can override/set any of the django-cms settings in cms_global_settings.py by defining the respective setting attribute in settings.py. Just add the prefix CMS_ and name the setting you want to override.

Set the variable CMS_DEFAULT_TEMPLATE to cms/base.html. This will tell Django CMS to use the base.html template that lives in project-name/cms/templates/cms.

Set the variable CMS_USE_TINYMCE = True if you want to use the (previously downloaded) tinymce app.

urls.py

Uncomment the various lines that will provide admin functionality. To the urlpatterns list, add:

    (r'', include('cms.urls')),

Note that (r'', include('cms.urls') must come last, and after (r'^admin/(.*)', admin.site.root).

Since [Django r9739 http://code.djangoproject.com/changeset/9739], a new url scheme for the admin site (r'^admin/', include('admin.site.urls') is used which is currently incompatible with the current django-cms trunk.

cms_settings.py (deprecated)

Using the cms_settings.py file is deprecated but still works. Can be used to override django-cms specific settings without touching main settings.py.

Start the server

You need to sync the database again, so that Django can create the tables used in the cms application. In the project directory:

python manage.py syncdb

If all goes well, you'll be able to start up the server:

python manage.py runserver 0.0.0.0:8000

This starts up the server, and tells it to respond to any IP address on port 8000.

Now you can visit

http://<server address>:8000/admin

and see that Django CMS is running. (Don't expect to be able to use this interface just yet - we need a few more steps.)

Note that will see an error at http://<server address>:8000: ! RootPageDoesNotExist - this simply means that you haven't created any pages

Next steps

If you know your way around Django and have a server set up to handle the static media files Django CMS needs (both for its own admin pages, and for your content in Django CMS) you should get that configured now. You'll need to do this before you can use Django CMS.

Alternatively, you can as a temporary expedient have Django do this for you. Serving Up Media Files explains how.