Django tCMS an easy to setup CMS that integrates easily with django-admin.
This project was brought to life by Matías Aguirre while hacking a CMS framework for Mydeco while working on Insophia.
Sites with custom CMS systems usually relies on deployment to bring new pages layouts, and these new pages are created by us, developers. tCMS brings a new mechanism where new pages definitions can be defined using our favorite tool, python. With a set of building blocks pages are created easily once it's structure is well defined.
- Use python to define your pages.
- Django-admin integration.
- Rich editing using CKEditor (users need to install CKEditor and define setting for tCMS app).
- Pages i18n, check Localization section for more details.
- Easy template integration, an easy {{ cms.block_name }} includes named block.
This application only depends on django-admin.
From pypi:
$ pip install django-tcms
or:
$ easy_install django-tcms
or clone from github:
$ git clone git://github.com/omab/django-tcms.git
and add tCMS to PYTHONPATH:
$ export PYTHONPATH=$PYTHONPATH:$(pwd)/tcms/
or:
$ cd tcms $ sudo python setup.py install
Add tCMS to installed applications:
INSTALLED_APPS = ( ... 'tcms', )
Define where your pages are defined:
TCMS_PAGES = 'tcms_pages'
The application will import the modules inside and inspect anything that has a
PAGE
variable defined.Define where images should be uploaded:
TCMS_IMAGES_UPLOAD_TO = 'cms/image/%Y/%m/%d'
This setting is used to populate a
upload_to
Django field parameter, so you can use any supported formats.Define this setting if you have CKEditor installed and want it to be used while editing content:
TCMS_CKEDITOR_BASE_URL = '/media/js/ckeditor'
The application uses Django cache to store content to speed up loading the content when serving the content to users, by default the cache name is
tcms
, but you can override it by defining:TCMS_CACHE_NAME = '...'
To enable page localizations, set this setting to
True
:TCMS_LOCALIZED = True
Localization is disabled by default.
Define your settings with the extra name/values needed by your templates:
RENDER_EXTRA_CONTEXT = {...}
If your site support multiple languages, you will want to create pages on every language.
tCMS uses Django LANGUAGES when searching for supported languages, but allows
you to create global language pages, for example if you support en-gb
and
en-us
locales, it's possible to define a page with locale en
and it
will be used to server the same content for users requesting for one or other
locale.
Check the example to see how it works.