Как установить django CMS вручную

Самый простой способ установки django CMS - это автоматическая установка django CMS installer. Это рекомендуемый способ для начала работы с новыми проектами, и именно его мы используем в tutorial section of this documentation.

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

Примечание

Вы также можете использовать это руководство для установки django CMS в рамках существующего проекта. Однако руководство предполагает, что вы начинаете с пустого проекта, поэтому вам нужно будет адаптировать приведенные ниже шаги по мере необходимости.

Этот документ предполагает, что вы обладаете некоторыми базовыми знаниями о Python и Django. После того, как вы интегрировали django CMS в свой проект, вы должны быть в состоянии следовать Учебники для введения в разработку с django CMS.

Установите пакет django CMS

Проверьте Python/Django requirements для этой версии django CMS.

У django CMS есть и другие требования, которые она перечисляет в качестве зависимостей в своем setup.py.

Важно

Мы настоятельно рекомендуем выполнять все следующие шаги в виртуальной среде. Вы должны знать, как создавать, активировать и утилизировать виртуальные среды с помощью virtualenv. Если вы не знаете, вы можете использовать приведенные ниже шаги для начала работы, но мы советуем вам потратить несколько минут на изучение основ использования virtualenv, прежде чем продолжить работу.

virtualenv django-cms-site  # create a virtualenv
source django-cms-site/bin/activate  # activate it

В активированной виртуальной среде virtualenv выполните:

pip install --upgrade pip

убедиться в актуальности pip, так как более ранние версии могут быть менее надежными.

Затем:

pip install django-cms

чтобы установить последнюю стабильную версию django CMS.

Создайте новый проект

Создайте новый проект:

django-admin startproject myproject

Если для вас это в новинку, вам следует прочитать official Django tutorial, где рассказывается о начале нового проекта.

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

myproject
    myproject
        __init__.py
        settings.py
        urls.py
        wsgi.py
    manage.py

Минимально необходимые приложения и настройки

Откройте файл settings.py нового проекта в текстовом редакторе.

УСТАНОВЛЕННЫЕ_APPS

Вам нужно будет добавить следующее в его список INSTALLED_APPS:

'django.contrib.sites',
'cms',
'menus',
'treebeard',
  • django CMS должен использовать фреймворк Django django.contrib.sites. Вам нужно будет установить SITE_ID в настройках - SITE_ID = 1 будет достаточно.

  • cms и menus - это основные модули django CMS.

  • django-treebeard используется для управления структурой дерева страниц и плагинов django CMS.

django CMS устанавливает django CMS admin style. Это обеспечивает некоторую стилизацию, которая помогает облегчить работу с компонентами администрирования django CMS. Технически это необязательный компонент и его не обязательно включать в вашем проекте, но он настоятельно рекомендуется.

В строке INSTALLED_APPS, перед django.contrib.admin, добавьте:

'djangocms_admin_style',

Языковые настройки

django CMS требует, чтобы вы установили параметр LANGUAGES. Здесь должны быть перечислены все языки, которые вы хотите, чтобы обслуживал ваш проект, и должен быть указан язык в LANGUAGE_CODE.

Например:

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

(Для простоты на этом этапе стоит изменить стандартное значение en-us, которое вы найдете в настройке LANGUAGE_CODE, на en).

База данных

django CMS требует бэкенда реляционной базы данных. Каждая установка django CMS должна иметь свою собственную базу данных.

Вы можете использовать SQLite, который входит в состав Python и не требует отдельной установки или дополнительной настройки. Вы вряд ли будете использовать его для проекта в производстве, но он идеально подходит для разработки и исследования, тем более что он настроен по умолчанию в DATABASES: нового проекта Django:

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

Примечание

Для развертывания необходимо использовать production-ready database with Django. Мы рекомендуем использовать PostgreSQL или MySQL.

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

Какую бы базу данных вы ни использовали, она также потребует установки соответствующего адаптера Python:

pip install psycopg2     # for Postgres
pip install mysqlclient  # for MySQL

Обратитесь к Django's DATABASES setting documentation за соответствующей конфигурацией для выбранного вами бэкенда базы данных.

Таблицы базы данных

Теперь запустите миграции для создания таблиц базы данных для новых приложений:

python manage.py migrate

Пользователь-администратор

Создайте суперпользователя администратора:

python manage.py createsuperuser

Использование cms check для конфигурации

После выполнения минимально необходимой установки, описанной выше, вы можете использовать встроенную в django CMS команду cms check, чтобы помочь вам определить и установить другие компоненты. Выполнить:

python manage.py cms check

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

Примечание

Если ключевые компоненты отсутствуют, django CMS не сможет запустить cms check command и вместо этого просто выдаст ошибку.

После каждого из описанных ниже шагов выполните cms check, чтобы убедиться, что вы устранили этот пункт в его контрольном списке.

Секидзай

Django Sekizai требуется CMS для управления статическими файлами. Вам необходимо иметь:

'sekizai'

перечисленные в INSTALLED_APPS, и:

'sekizai.context_processors.sekizai'

в TEMPLATES['OPTIONS']['context_processors']:

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'sekizai.context_processors.sekizai',
            ],
        },
    },
]

Middleware

в вашем MIDDLEWARE вам понадобится django.middleware.locale.LocaleMiddleware - он *не установлен в проектах Django по умолчанию.

Также добавьте:

'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',

в список.

Вы также можете добавить 'cms.middleware.utils.ApphookReloadMiddleware'. Это не является абсолютно необходимым, но это useful. Если включен, то должен быть в начале списка.

добавьте следующую конфигурацию в settings.py:

X_FRAME_OPTIONS = 'SAMEORIGIN'

Контекстные процессоры

Добавьте 'cms.context_processors.cms_settings' к TEMPLATES['OPTIONS']['context_processors'].

Также добавьте 'django.template.context_processors.i18n', если его еще нет.

cms check теперь не сможет определить дальнейшие проблемы с вашим проектом. Однако потребуется дополнительная настройка.

Дополнительная необходимая конфигурация

URL-адреса

В urls.py проекта добавьте url(r'^', include('cms.urls')) в список urlpatterns. Он должен идти после других шаблонов, чтобы специфические URL для других приложений могли быть обнаружены первыми. Примечание: при использовании Django 2.0 или более поздней версии синтаксис выглядит следующим образом re_path(r'^', include('cms.urls'))

Вам также понадобится импорт для django.urls.include. Например:

from django.urls import re_path, include

urlpatterns = [
    re_path(r'^admin/', admin.site.urls),
    re_path(r'^', include('cms.urls')),
]

Теперь проект django CMS будет запущен, как вы увидите, если запустите его с помощью python manage.py runserver. Вы сможете связаться с ним по адресу http://localhost:8000/, а с администратором - по адресу http://localhost:8000/admin/. Однако вы еще не сможете сделать с ним ничего полезного.

Шаблоны

django CMS требует хотя бы один шаблон для своих страниц, поэтому вам нужно добавить CMS_TEMPLATES в настройки. Первый шаблон в списке CMS_TEMPLATES будет шаблоном проекта по умолчанию.

CMS_TEMPLATES = [
    ('home.html', 'Home page template'),
]

В корне проекта создайте директорию templates, а в ней home.html, минимальный шаблон django CMS:

{% load cms_tags sekizai_tags %}
<html>
    <head>
        <title>{% page_attribute "page_title" %}</title>
        {% render_block "css" %}
    </head>
    <body>
        {% cms_toolbar %}
        {% placeholder "content" %}
        {% render_block "js" %}
    </body>
</html>

Это стоит объяснить немного подробнее:

  • {% load cms_tags sekizai_tags %} загружает библиотеки тегов шаблона, которые мы используем в шаблоне.

  • {% page_attribute "page_title" %} извлекает page_title attribute.

  • {% render_block "css" %} и {% render_block "js" %} - это теги шаблонов Sekizai, которые загружают блоки HTML, определенные приложениями Django. django CMS определяет блоки для CSS и JavaScript, и требует эти два тега. Мы рекомендуем размещать {% render_block "css" %} непосредственно перед тегом </head>, а тег {% render_block "js" %} - непосредственно перед </body>.

  • {% cms_toolbar %} отображает django CMS toolbar.

  • {% placeholder "content" %} определяет placeholder, куда могут быть вставлены плагины. Шаблон должен иметь хотя бы один тег шаблона {% placeholder %}, чтобы быть полезным для django CMS. Название местодержателя просто описательное, для справки.

Django должен знать, где искать свои шаблоны, поэтому добавьте templates в список TEMPLATES['DIRS']:

TEMPLATES = [
    {
        ...
        'DIRS': ['templates'],
        ...
    },
]

Примечание

То, как мы настроили шаблон здесь, просто для примера. В реальном проекте мы бы рекомендовали создать шаблон base.html, общий для всех приложений проекта, который могут расширять ваши шаблоны django CMS.

Подробнее о том, как работает наследование шаблонов, смотрите в Django template language documentation.

Работа с медиа и статическими файлами

Сайт django CMS должен будет обрабатывать:

  • статические файлы, которые являются основной частью приложения или проекта, например, необходимые изображения, CSS или JavaScript.

  • медиафайлы, загружаемые пользователями сайта или приложениями.

STATIC_URL определяется (как "/static/") в настройках нового проекта по умолчанию. STATIC_ROOT, место, куда будут копироваться и откуда обслуживаться статические файлы, для разработки не требуется - only for production.

На данный момент, используя runserver и имея DEBUG = True в настройках, вам не нужно беспокоиться ни об одном из них.

Однако, MEDIA_URL (куда будут подаваться медиа файлы) и MEDIA_ROOT (где они будут храниться) должны быть добавлены в ваши настройки:

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

Для развертывания необходимо настроить подходящую службу медиафайлов. В целях разработки, следующее будет работать в вашем urls.py:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

(См. документацию Django для руководства по serving media files in production).

Добавление функциональности обработки содержимого

Теперь у вас есть основы для создания сайта django CMS, который может управлять и обслуживать страницы. Однако в проекте до сих пор не установлены плагины, что означает, что у него нет возможности работать с контентом на этих страницах. Все содержимое в django CMS управляется с помощью плагинов. Поэтому сейчас нам необходимо установить несколько дополнительных приложений-аддонов для обеспечения плагинов и других функциональных возможностей.

На самом деле, вам не нужно устанавливать ни одно из них. django CMS не обязывает вас к использованию каких-либо конкретных приложений для работы с контентом. Однако перечисленные здесь приложения обеспечивают ключевую функциональность и настоятельно рекомендуются.

Django Filer

Django Filer обеспечивает управление файлами и изображениями. Многие другие приложения также полагаются на Django Filer - очень необычно иметь сайт django CMS, который не использует Django Filer. Конфигурация в этом разделе поможет вам начать работу, но за более полной информацией о конфигурации вам следует обратиться к разделу Django Filer documentation.

Для установки:

pip install django-filer

Ряд приложений будет установлен в качестве зависимостей. Easy Thumbnails необходимо для создания новых версий изображений разных размеров; Django MPTT управляет древовидной структурой папок в Django Filer.

Pillow, библиотека визуализации Python, будет установлена. Pillow нуждается в некоторых библиотеках системного уровня - в Pillow documentation подробно описано, что требуется для запуска на различных операционных системах.

Добавить:

'filer',
'easy_thumbnails',
'mptt',

до INSTALLED_APPS.

Вам также необходимо добавить:

THUMBNAIL_HIGH_RESOLUTION = True

THUMBNAIL_PROCESSORS = (
    'easy_thumbnails.processors.colorspace',
    'easy_thumbnails.processors.autocrop',
    'filer.thumbnail_processors.scale_and_crop_with_subject_location',
    'easy_thumbnails.processors.filters'
)

Для Django Filer и Easy Thumbnails нужно будет создать новые таблицы базы данных, поэтому запустите миграции:

python manage.py migrate filer
python manage.py migrate easy_thumbnails

(или просто, python manage.py migrate).

Django CMS CKEditor

Django CMS CKEditor - это текстовый редактор по умолчанию для django CMS.

Установить: pip install djangocms-text-ckeditor.

Добавьте djangocms_text_ckeditor к вашему INSTALLED_APPS.

Запустить миграции:

python manage.py migrate djangocms_text_ckeditor

Различные плагины

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

Для установки:

pip install djangocms-link djangocms-file djangocms-picture djangocms-video djangocms-googlemap djangocms-snippet
    djangocms-style

и добавьте:

'djangocms_link',
'djangocms_file',
'djangocms_picture',
'djangocms_video',
'djangocms_googlemap',
'djangocms_snippet',
'djangocms_style',

до INSTALLED_APPS.

Затем запустите миграции:

python manage.py migrate.

Эти и другие плагины более подробно описаны в Некоторые часто используемые плагины. Более подробно плагины перечислены на странице django CMS Marketplace.

Запуск проекта

Запустите сервер запуска:

python manage.py runserver

и зайдите на новый сайт, который теперь должен быть доступен по адресу http://localhost:8000. Войдите в систему, если вы еще не сделали этого.

it-works-cms

Следующие шаги

Если это ваш первый проект django CMS, прочитайте Учебник для ознакомления с некоторыми основами.

Уроки tutorials for developers помогут вам понять, как подойти к django CMS в качестве разработчика. Обратите внимание, что учебники предполагают, что вы установили CMS с помощью django CMS Installer, но с небольшой адаптацией вы сможете использовать его в качестве основы.

Чтобы развернуть ваш проект django CMS на рабочем веб-сервере, пожалуйста, обратитесь к разделу Django deployment documentation.

Вернуться на верх