четверг, 13 сентября 2012 г.

Django CMS

Django CMS - это система управления контентом, базирующаяся на фреймворке Django, написанном на языке Python. Django CMS позволяет интегрировать в себя сотни существующих приложений, созданных для Django. Новая версия системы стала лучше, эффективней и быстрее в работе.

Скачать Django CMS можно с официального сайта, расположенного по адресу:

django-cms.org

Установка Django CMS.


Для установки Django CMS мы будем использовать среду virtualenv. Virtualenv - это песочница, в которую устанавливаются все зависимости будущего проекта: сам интерпретатор, стандартный инструментарий, необходимые библиотеки. В нашем случае это Django и DjangoCMS.
Создадим директорию cms-project, а в ней среду virtualenv:

sudo apt-get install python-setuptools python-dev build-essential python-pip python-virtualenv
# проходит некоторое время...
# готовим уголок для проекта:
mkdir cms-project
cd cms-project

# создаем окружение в директории env, ключ --no-site-packages закрывает доступ окружению к глобальным библиотекам системы
virtualenv --no-site-packages env

Теперь ставим django, DjangoCMS и Python Imaging LIbrary, находясь прямо в
той же директории (cms-project):

pip install django -E env/
pip install django-cms -E env/
pip install pil -E env/
Далееь запустим окружение (по-прежнему находясь в cms-project):

env/bin/activate

Теперь мы находимся в окружении (env), где нам доступны команды Django, установленного в окружение:

django-admin.py startproject tstproj

Корректируем tstproj/settings.py.
Подключаем админку. Не забываем сделать в директории MEDIA_ROOT
симлинк на ее статику.

Проверяем работу фреймворка:

cd tstproj
python manage.py runserver

Теперь надо подключить Django CMS. Это просто. Необходимо лишь добавить процессоры контекста, само приложение и создать хотя бы один шаблон. Опять же, в MEDIA_ROOT - симлинк на статику cms, в settings.py - переменная с адресом cms. Создание симлинка в нашем случае (вся статика - в директории tstproj/media/) выглядит так:

cd tstproj/media/
ln -s ../../env/cms/media/cms/
Готов. Пробуем:

cd tstproj
python manage.py runserver

Заходим в браузере в админку (по умолчанию http://localhost:8000/admin/), и попадаем в Django CMS.

В интерфейсе администратора появляется пункт "CMS" с подпунктом "Pages". Здесь располагается сердце приложения - карта-дерево сайта. Можно подлючать страницы, управлять их публикацией и включением в меню.

Создание каждой страницы начинается с указания шаблона. Шаблоны перечисляются в переменной CMS_TEMPLATES в файле settings.py.

Шаблон - обычный для Джанго, со включенными тегами cms_tags. Главный тег placeholder, указывающий места включения плагинов. Другие удобные теги: show_menu и breadcrumbs, позволяют включать в шаблон навигационное меню и "хлебные крошки". Внешний вид вспомогательных элементов легко регулируется в отдельных шаблонах.

Места, отмеченные тегом placeholder, из интерфейса администратора можно будет заполнить плагинами. Из коробки доступны плагины включения в страницу форматированного текста, ссылок, файлов, картинок, Google Map, кусков html.

Новые плагины создаются очень легко на базе имеющихся моделей, интерфейс управления содержимым плагина можно генерировать автоматически — как с обычными моделями Django.

Для человека, знакомого с разработкой на Django фреймворке очень удобно, что в карту сайта можно добавлять обычные приложения Django и навигационное меню будет их учитывать. Приложения для этого надо зарегистрировать в settings.py:

CMS_APPLICATIONS_URLS = (
    ('mysite.app.urls', 'Some app'),
)

Приложения также могут модифицировать поведение навигационного меню. Например, перечислять элементы каталога, разделы магазина и так далее.

Интерфейс администратора достаточно прост и его не стыдно показать заказчику сайта.

Плагинов и расширений пока немного, но веб-программисту не составит труда подключить любое из обычных приложений Django либо разработать новый компонент.

Нужно отметить внятную и удобную документацию.

В общем, Django CMS вполне подходит для людей, часто имеющих дело с Django и привыкшими к удобной разработке на Python.

Комментариев нет:

Отправить комментарий