13 August 2013 г. 0:51:22
Руководство предполагает что ваш компьютер соответствует требованиям изложенным в части [Установка] документации
Если у вас возникла проблема и Вы не можете самостоятельно разобраться как ее решить, Вы можете получить информацию из [мэ
йллистов] mailinglist или IRC канала #django-cms в irc.freenode.net. [или оставить коментарий на данном сайте]
Сбор требований это хорошее начало, но нам необходимо подготовить и настроить проект Django, в котором будет находиться CMS.
~cut~
Предполагается, что ваш проект будет находиться в ~/workspace/myproject/.
Создадим Django проект:
cd ~/workspace django-admin.py startproject myproject cd myproject python manage.py runserver
Откройте 127.0.0.1:8000 В браузере и вы увидите милое приветсвие “It Worked” от 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.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'), } }
Вам надо включить 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
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”.
Django CMS обрабатывает медиа файлы (стили и скрипты) используемые в плагинах при помощиdjango-sekizai. Это потребует от вас создать для sekizai по крайней мере два пространства имен в ваших шаблонах: js и css. Вы можете это сделать используя шаблонный-тэг render_block из библиотеки sekizai_tags. Мы настоятельно рекомендуем помещать тэг {% render_block "css" %} последним перед закрывающим HTML тэгом </head> и {% render_block "js" %} перед закрытием HTML тэга </body>.
Команда зависит от того обновляетесь ли Вы или выполняете новую установку. Мы рекомендуем ознакомиться с тем как работает South, это очень простой, мощный и удобный инструмент. Django CMS активно использует его.
Выполните:
python manage.py syncdb --all python manage.py migrate --fake
В первый раз Вам будет предложено создать супер пользователя. Создайте его введя ‘yes’ и заполнив соответствующие поля.
Выполните:
python manage.py syncdb python manage.py migrate
Теперь воспользуйтесь следующей командой чтобы убедиться что все было сделано правильно:
python manage.py cms check
Запустите (или перезапустите, если он уже был запущен) сервер используя команду 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.
Наконц-то, наступила лучшая часть: вы можете начать пользоваться CMS! Запустите сервер используя команду python manage.py runserver, откройте панель администратора 127.0.0.1:8000/admin/ и войдите как супер пользовать используя данные введенные ранее, при выполнении команды syncdb.
После того как вы войдете администратором, вы должны увидеть что-то похожее на это:
Добавить страницу очень просто, нажмите на “Pages” в панели администратора, а затем нажмите кнопку “add page” в правом верхнем углу экрана
Здесь Вы должны выбрать какой шаблон использовать (помните, мы создали их два), здесь, также находятся достаточно очевидные поля такие как язык (для страниц использующих переводы), заголовок, url по умолчанию будет его использовать.
Неудивительно что кнопка сохранить сохранит страницу, теперь она будет доступна в списке страниц.
Поздравляем! Теперь у вас есть полностью установленная django CMS.
Следующий список параметров может быть изменен для каждой из ваших страниц.
По умолчанию все страницы “невидимы”. Чтобы предоставить людям доступ к ним вы должны отметить их как “published” (опубликованная)
Эта опция позволяет Вам указать должна ли страница появится в навигации вашего сайта (это значит можно ли будет найти ее в меню или нет)
Таким образом наша страница делает не многое. убедитесь что отметка “published” установлена и затем нажмите кнопку “edit” (редактировать).
Не пока обращайте внимание на большинство элементов и просто нажмите кнопку “view on site” в правом верхнем углу экрана. как и ожидалось, ваша страница пустая так как наш шаблон очень минималистичный.
Тогда перейдем к редактированию.
Нажмите в браузере кнопку назад, чтобы вернуться к панели администратора. Если вы следовали руководству, ваш шаблон (template_1.html) определяет два плейсхолдера. Интерфейс администратора показывает вам эти плейсхолдеры как пункты меню:
Пролистайте доступные плагины при помощи выпадающего списка. Он отображает те плагины, которые Вы добавили в настройках INSTALLED_APPS. Выберите плагин “text” в выпадающем списке и нажмите кнопку “Add”.
В правой части появится текстовый редактор (TinyMCE).
Наберите в редакторе какой-нибудь текст и нажмите кнопку сохранить.
Текст отображается как черновая копия, но вы можете увидеть как он будет выглядеть нажав кнопку преппросмотра “Preview draft”. Если вместо этого Вы нажмете кнопку “View on site”, вы сможете увидеть эту страницу что для обычных пользователей эта страница по прежнему пустая.
Чтобы опубликовать изменения, нажмите кнопку “Publish draft”. Перейдите обратно на ская нажав кнопку “View on site” справа верху. Вот оно!
Поздарвлем, теперь у Вас есть полностью функциональная CMS! Можете свободно экспериментировать с различными плагинами предоставленными из коробки и создавайте прекрасные сайты!