Django CMS Приступая к работе

13 August 2013 г. 0:51:22

1. Вводная часть

Руководство предполагает что ваш компьютер соответствует требованиям изложенным в части [Установка] документации

1.1. Получение помощи

Если у вас возникла проблема и Вы не можете самостоятельно разобраться как ее решить, Вы можете получить информацию из [мэ

йллистов]  mailinglist или IRC канала #django-cms в irc.freenode.net. [или оставить коментарий на данном сайте]

1.2. Установка и настройка

1.2.1. Подготовка окружения

Сбор требований это хорошее начало, но нам необходимо подготовить и настроить проект Django, в котором будет находиться CMS.

1.2.1.1. Создание вашего Django проекта

Предполагается, что ваш проект будет находиться в ~/workspace/myproject/.

Создадим Django проект:

cd ~/workspace
django-admin.py startproject myproject
cd myproject
python manage.py runserver

Откройте 127.0.0.1:8000 В браузере и вы увидите милое приветсвие “It Worked” от Django.

  

1.2.1.2. Установка и настройка django CMS в проекте Django

Откройте файл ~/workspace/myproject/settings.py.

Чтобы сделать вашу жизнь проще, добавьте следующие строки в самый верх файла:

# -*- coding: utf-8 -*-
import os
gettext = lambda s: s
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))

 

Добавьте следующие приложения в секцию INSTALLED_APPS. Это добавит  как django CMS так и другие очень полезные библиотеки приложение и библиотеки:

  • 'cms', # собственно django CMS 
  • 'mptt', # utilities for implementing a modified pre-order traversal tree
  • 'menus', # помощник для иерархии независимой навигации по сайту
  • 'south', # интеллектуальная система миграции данных
  • 'sekizai', # управление скриптами и стилями

Так-же добавьте некоторые (а может и все) плагины, в зависимости от Ваших потребностей:

'cms.plugins.file',
'cms.plugins.flash',
'cms.plugins.googlemap',
'cms.plugins.link',
'cms.plugins.picture',
'cms.plugins.snippet',
'cms.plugins.teaser',
'cms.plugins.text',
'cms.plugins.video',
'cms.plugins.twitter',

Предупреждение

Добавление плагина 'cms.plugins.snippet' потенциально несет угрзу безопасности. Больше информации смотрите по ссылке на Snippet.

Более детальное описание плагинов находится в главе Plugins. Существует намного больше плагинов для django CMS которые можно найти на странице extensions. 

Так же убедитесь, что строка 'django.contrib.admin' была раскомментирована. К тому же Вы можете захотеть использовать django-filer для django CMS plugin вместо  основных плагинов cms.plugins.file, cms.plugins.picture,cms.plugins.teaser и cms.plugins.video. В этом случае вместо них в секцию INSTALLED_APPS Вам не надо добавить следующие строки:

'filer',
'cmsplugin_filer_file',
'cmsplugin_filer_folder',
'cmsplugin_filer_image',
'cmsplugin_filer_teaser',
'cmsplugin_filer_video',

Если Вы выбрали основные плагины то надо позаботиться о том чтобы директорий в котором находится CMS_PAGE_MEDIA_PATH (по умолчению  cms_page_media  ссылается на MEDIA_ROOT) доступен на запись для пользователя, под которым запусткается Django. Если Вы выбрали  django-filer  то требованияпо конфигурации аналогичные.

Если Вам нужна версионность содержимого вы можете установить django-reversion и добавить его в секцию INSTALLED_APPS вот так:

'reversion'

Далее вам надо добавить в django CMS  middleware в секцию MIDDLEWARE_CLASSES :

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.common.CommonMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware',
)

 

Необходимо добавить секцию TEMPLATE_CONTEXT_PROCESSORS и добавить как минимум следующее содержание:

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.i18n',
    'django.core.context_processors.request',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'cms.context_processors.media',
    'sekizai.context_processors.sekizai',
)

 

Замечание

Эти настройки не генерируются в settings.py Django автоматически при создании проекта, поэтому их необходимо добавить самостоятельно.

Укажите директорий в котором будут находиться статические файлы (картинки, скрипты, стили и т.д.) в STATIC_ROOT:

STATIC_ROOT = os.path.join(PROJECT_PATH, "static")
STATIC_URL = "/static/"

 

Для загрузки файлов, вам понадобиться настроить настройку MEDIA_ROOT:

MEDIA_ROOT = os.path.join(PROJECT_PATH, "media")
MEDIA_URL = "/media/"

Замечание

Убедитесь, пожалуйста, что оба директория static и media созданы в вашем проекте, и доступны для записи.

А теперь добавим немного магии в секцию TEMPLATE_DIRS:

TEMPLATE_DIRS = (
    # В документации сказано что пути должны быть абсолютными: PROJECT_PATH именно такой путь.
    # Жизнь прекрасна!
    os.path.join(PROJECT_PATH, "templates"),
)

 

Так-же добавьте несколько шаблонов в CMS_TEMPLATES; например:

CMS_TEMPLATES = (
    ('template_1.html', 'Template One'),
    ('template_2.html', 'Template Two'),
)

 

Мы создадим реальные файлы шаблонов позже, в одном из шагов, не беспокойтесь о них пока. Просто скопируйте эти строки в настройки.

Замечание

Шаблоны которые в оределите в CMS_TEMPLATES должны существовать и содержать по крайней мере один тэг шаблонов {% placeholder <name> %} чтобы быть полезным для django CMS. Больше информеции находится в разделе Creating templates

Django CMS позволяет вам делать переводы страниц на все языки которые вы укажите в секции LANGUAGES . Но пока ограничимся только английским:

LANGUAGES = [
    ('en', 'English'),
]

И наконец, настроим базу данных в секции DATABASES. Укажем ту базу нанных которая будет использоваться. Если Вы просто хотите попробовать django-cms на локале, воспользуйтесь sqlite3, это самый простой способ настройки базы данных, однако не следует использовать sqlite3 для реальных проектов. Если вы все еще хотие использовать этоту базу данных, секция DATABASES должна выглядеть  следующим образом:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(PROJECT_PATH, 'database.sqlite'),
    }
}

 

1.2.2. Настройка URL

Вам надо включить url-шаблоны 'cms.urls'  в конец Ваших url-шаблонов. Мы предполагаем что urls.py будет выглядеть следующим образом:

from django.conf.urls.defaults import *
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.conf import settings

admin.autodiscover() 
urlpatterns = i18n_patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')),
) 

if settings.DEBUG:
    urlpatterns = patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    url(r'', include('django.contrib.staticfiles.urls')),
) + urlpatterns

 

1.3. Создание шаблонов

Django CMS использует шаблоны чтобы определить внешний вид страницы и те части которые являются редактируемыми. Редактируемые части называются  placeholders. Этот страндарт является стандартом шаблонов  Django вы можете найти подробное описание в  официальной документации.

Шаблоны которые вы собираетесь использовать должны быть указаны в секиции CMS_TEMPLATES:

CMS_TEMPLATES = (
    ('template_1.html', 'Template One'),
    ('template_2.html', 'Template Two'),
)

 

Если вы следовали этому руководству, то этот код уже должен быть в Вашем файле настроек.

Итак, переходим непосредственно к файлам шаблонов!

Запустите свой любимый редактор и создайте вашем проекте  файл base.html и поместите его в директорий templates

Вот простейший пример шаблона base.html:

{% load cms_tags sekizai_tags %}
<html>
  <head>
      {% render_block "css" %}
  </head>
  <body>
      {% cms_toolbar %}
      {% placeholder base_content %}
      {% block base_content %}{% endblock %}
      {% render_block "js" %}
  </body>
</html>

 

Теперь создайте файл template_1.html в том же директории, который будет использовать базовый шаблон и отображать дополнительное содержание:

{% extends "base.html" %}
{% load cms_tags %}
 
{% block base_content %}
  {% placeholder template_1_content %}
{% endblock %}

 

Когда вы указываете template_1.html в качестве шаблона, на вашей странице, вы увидите два placeholder-а в которых будут размещаться плагины. Первый - это template_1_content из файла template_1.html и второй base_content из base.html.

Когда Вы работаете с большим количеством, убедитесь что заполнили описания для каждого плейсхолдера, чтобы Вы могли проще идентифицировать их в панели администратора.

Теперь можете поэкспериментировать при создании файла template_2.html. Если вы не чувствуте творческих порывов, просто скопируйте содержание template_1 и переименуйте второй плейсхолдер в  “template_2_content”.

1.3.1. Обработка статических файлов с помощью sekizai

Django CMS обрабатывает медиа файлы (стили и скрипты) используемые в плагинах при помощиdjango-sekizai. Это потребует от вас создать для sekizai  по крайней мере два пространства имен в ваших шаблонах: js и css. Вы можете это  сделать используя шаблонный-тэг render_block из библиотеки sekizai_tags. Мы настоятельно рекомендуем помещать тэг {% render_block "css" %} последним перед закрывающим HTML тэгом </head>  и {% render_block "js" %} перед закрытием HTML тэга </body>. 

1.3.2. Начальная настройка базы данных

Команда зависит от того обновляетесь ли Вы или выполняете новую установку.  Мы рекомендуем ознакомиться с тем как работает South, это очень простой, мощный и удобный инструмент. Django CMS активно использует его.

1.3.2.1. Новая установка

Выполните:

python manage.py syncdb --all
python manage.py migrate --fake

В первый раз Вам будет предложено создать супер пользователя. Создайте его введя ‘yes’ и заполнив соответствующие поля.

1.3.2.2. Обновление

Выполните:

python manage.py syncdb
python manage.py migrate

1.3.3. Проверка что все сделано правильно

Теперь воспользуйтесь следующей командой чтобы убедиться что все было сделано правильно:

python manage.py cms check

1.3.4. Запуск!

Запустите (или перезапустите, если он уже был запущен)  сервер используя команду python manage.py runserver и перейдите по адресу 127.0.0.1:8000 в вашем браузере. Вы долны получить приветственное сообщение от django CMS со слованми “It Worked”.

 

Перейдите в панель администратора (http://127.0.0.1:8000/admin/) и войдите в используя данные введенные при настройке базы данных (1.3.2.1)

Для разворачивания django CMS проекта на продакшн веб сервере, пожалуйста ознакомьтесь  Документацией django.

1.4. Создание первой страницы!

Наконц-то,  наступила лучшая часть: вы можете начать пользоваться CMS! Запустите сервер используя команду python manage.py runserver, откройте панель администратора 127.0.0.1:8000/admin/  и войдите как супер пользовать используя данные введенные ранее, при выполнении команды syncdb.

После того как вы войдете администратором, вы должны увидеть что-то похожее на это:

1.4.1. Добавление страниц

Добавить страницу очень просто, нажмите на “Pages”  в панели администратора, а затем нажмите кнопку “add page”  в правом верхнем углу экрана

 

Здесь Вы должны выбрать какой шаблон использовать (помните, мы создали их два), здесь, также находятся достаточно очевидные поля такие как язык (для страниц использующих переводы), заголовок, url по умолчанию будет его использовать.

Неудивительно что кнопка сохранить сохранит страницу, теперь она будет доступна в списке страниц.

Поздравляем! Теперь у вас есть полностью установленная django CMS.

1.4.2. Публикование страниц

Следующий список параметров может быть изменен для каждой из ваших страниц.

1.4.2.1. Visibility (видимость)

По умолчанию все страницы “невидимы”. Чтобы предоставить людям доступ к ним вы должны отметить их как “published” (опубликованная)

1.4.2.2. Menus (меню)

Эта опция позволяет Вам указать должна ли страница появится в навигации вашего сайта (это значит можно ли будет найти ее в меню или нет)

Page options

1.4.3. Добавление содержания на страницу

Таким образом наша страница делает не многое. убедитесь что отметка “published” установлена и затем нажмите кнопку “edit” (редактировать).

Preview

Не пока обращайте внимание на большинство элементов и просто нажмите кнопку “view on site” в правом верхнем углу экрана. как и ожидалось, ваша страница пустая так как наш шаблон очень минималистичный.

Тогда перейдем к редактированию.

Нажмите в браузере кнопку назад, чтобы вернуться к панели администратора. Если вы следовали руководству, ваш шаблон (template_1.html) определяет два плейсхолдера. Интерфейс администратора показывает вам эти плейсхолдеры как пункты меню:

Пролистайте доступные плагины при помощи выпадающего списка. Он отображает те плагины, которые Вы добавили в настройках INSTALLED_APPS.  Выберите плагин “text” в выпадающем списке и нажмите кнопку “Add”.

Adding plugins on page

В правой части появится текстовый редактор (TinyMCE).

Наберите в редакторе какой-нибудь текст и нажмите кнопку сохранить.

Текст отображается как черновая копия, но вы можете увидеть как он будет выглядеть нажав кнопку преппросмотра “Preview draft”. Если вместо этого Вы нажмете кнопку “View on site”, вы сможете увидеть эту страницу что для обычных пользователей эта страница по прежнему пустая.

Чтобы опубликовать изменения, нажмите кнопку “Publish draft”. Перейдите обратно на ская нажав кнопку “View on site” справа верху. Вот оно!

Publish draft

1.4.4. Куда двигаться дальше

Поздарвлем, теперь у Вас есть полностью функциональная CMS! Можете свободно экспериментировать с различными плагинами предоставленными из коробки и создавайте прекрасные сайты!


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

comments powered by Disqus
Меню

Cult of digits 2014 Яндекс.Метрика