Содержание
Установка Django CMS 3 Beta 3 с помощью Django 1.6 на Ubuntu
14 апреля, 2014 1:32 пп
1 394 views
| Комментариев нет
Linux, Python, Ubuntu, VPS | Amber
| Комментировать запись
Вступление
Поскольку версия Django CMS 3 вышла не так давно, она по-прежнему постоянно развивается. Последний доступный пакет (Beta 3) поставляется с обещанным надежным API.
Данная статья демонстрирует установку и запуск этой мощной и популярной системы управления контентом (CMS). Кроме того, здесь можно найти советы по модернизации Django CMS 2.
Примечание: чтобы получить инструкции по установке стабильной версии Django CMS (сегодня это версия 2), прочтите статью «Установка и настройка Django CMS на сервер Debian 7 и Ubuntu 13».
Django и Django CMS
Django
Django – это фреймворк для веб-разработки, основанный на языке программирования Python. Этот широкомасштабный проект упаковывает и отправляет огромнейшее количество инструментов и приложений для быстрого начала разработки.
Django CMS
Django CMS – удобная для пользователя система управления контентом и фреймворк, разработанные в Django. Данная система в полной мере использует расширенную функциональность Django и предоставляет подключаемый интерфейс разработки для создания веб-сайтов всех видов.
Этот зрелый продукт ориентирован на бизнес. На протяжении многих лет проект был сосредоточен на ключевых областях программирования, чтобы с помощью тщательно продуманных инструментов сделать жизнь разработчиков и системных администраторов проще.
В своей третьей версии Django CMS стремится изменить стратегию и обеспечить существенно улучшенный интерфейс и впечатляющий набор функций.
Подготовка сервера Ubuntu
Поскольку Django CMS является проектом Python, необходимо правильно настроить систему, чтобы установленный сервер запускался и работал без сбоев и ошибок.
Чтобы подготовить Ubuntu VPS, прочтите статью «Настройка облачного сервера Ubuntu для работы веб-приложений Python».
Инструкции по установке (и обновлению) Django CMS приведены ниже.
Установка Django CMS 3 Beta 3
Виртуальная среда Python для Django CMS
Создайте виртуальную среду (если она не была создана ранее):
virtualenv django_env
cd django_env
Или активируйте ее:
# Перейдите в каталог:
# cd [django_env]
source bin/activate
Зависимости Django CMS
Поскольку версия Django CMS 3 еще не вышла, нужно установить приложение с ветки разработки Git-репозитория.
Запустите следующую команду, которая установит Django CMS 3 с помощью pip:
pip install git+git://github.com/divio/django-cms.git@develop#egg=django_cms
Затем установите любой необходимый драйвер базы данных, например
# PostgreSQL:
pip install psycopg2
Одна из важнейших зависимостей – библиотека Python Imaging Library (или PIL), которая используется Django CMS для обработки изображений (например, обрезки, изменения размера и т. д.).
Но вместо PIL иногда лучше использовать более удобное ответвление данной библиотеки под названием Pillow. Данный пакет совместим с setuptools и автоматически устраняет некоторые проблемы, связанные с использованием PIL.
Чтобы установить Pillow, запустите:
pip install pillow
Обновление Django CMS 2 до версии 3
Чтобы обновить Django CMS с помощью pip, запустите:
pip install --upgrade git+git://github.com/divio/django-cms.git@develop#egg=django_cms
Примечание: при обновлении необходимо учитывать, что не все пакеты имеют обратную совместимость, некоторые из них могут перестать работать. Перед обновлением CMS рекомендуется обратиться за дополнительной информацией к блогам и форумам, посвященным Django CMS Version 3 Beta.
Настройка Django CMS 3
Начало работы с Django CMS – достаточно простой и понятный процесс; но прежде чем приступить к нему, нужно выполнить настройку системы. Данный раздел содержит советы касательно начальной загрузки конфигураций и приводит несколько примеров шаблонов файлов, которые можно использовать в работе.
Создание нового проекта
Как основанное на Django приложение, Django CMS поставляется с некоторыми инструментами автоматизации и управления.
Чтобы создать новый проект с помощью инструмента django-admin, запустите следующее:
# Синтаксис: python django-admin.py startproject [имя проекта]
# Пример:
django-admin.py startproject dcms
# Затем перейдите в каталог приложения:
cd dcms
Конфигурирование settings.py
Как и при работе с Django, теперь необходимо внести некоторые изменения в главный конфигурационный файл settings.py.
Чтобы отредактировать данный файл с помощью nano, используйте команду:
# Синтаксис: nano [имя каталога проекта]/settings.py
# Пример:
nano dcms/settings.py
Скопируйте и вставьте (или отредактируйте) приведенный ниже блок кода в начало файла, чтобы внести переменную, указывающую на расположение основного каталога проекта:
# -*- coding: utf-8 -*-
import os
BASE_DIR = os. path.dirname(os.path.dirname(__file__))
PROJECT_PATH = BASE_DIR
Ниже в файле найдите столбец, начинающийся с INSTALLED_APPS.
Измените его, чтобы он имел следующий вид:
INSTALLED_APPS = (
# Additional plugin examples
# e.g.:
# Django CMS CK Editor:
# https://github.com/divio/djangocms-text-ckeditor
# 'djangocms_text_ckeditor',
# Django CMS:
'cms',
# Utilities:
'mptt',
'menus',
'south',
'sekizai',
# Other CMS modules:
'djangocms_admin_style',
# Django:
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
)
Затем найдите MIDDLEWARE_CLASSES и отредактируйте его следующим образом:
MIDDLEWARE_CLASSES = (
# Django:
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django. middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.doc.XViewMiddleware',
# Django CMS:
'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.contrib.messages.context_processors.messages',
'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',
)
В завершение переместитесь в конец файла и найдите STATIC_URL. Удалите данный раздел и внесите следующий блок кода:
SITE_ID = 1
STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
TEMPLATE_DIRS = (
# List of template directories.
# Example:
os.path.join(PROJECT_PATH, 'templates'),
)
CMS_TEMPLATES = (
# List of templates.
# Example:
('template_1.html', 'Template One'),
)
LANGUAGES = (
# List of languages.
# Example:
('en-us', 'English'),
)
Сохраните внесенные изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
Конфигурирование urls.py
Теперь необходимо установить некоторые URL. Для этого отредактируйте файл urls.py. Чтобы отредактировать данный файл в nano, запустите следующее:
# Синтаксис: nano [имя каталога проекта]/urls. media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
url(r'', include('django.contrib.staticfiles.urls')),
) + urlpatterns
Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
Настройка шаблонов
Перед созданием базы данных и тестированием инсталляции (или ее обновления) необходимо разработать некоторые шаблоны.
Примечание: для начала определите шаблоны в файле settings.py, а затем создайте их соответствующим образом.
Чтобы создать каталоги и файлы шаблонов, запустите следующее:
mkdir templates
touch templates/base.html
touch templates/template_1.html
Отредактируйте templates/base.html с помощью nano:
nano 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>
Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
Отредактируйте templates/template_1.html с помощью nano:
nano templates/template_1.html
Внесите следующее:
{% extends "base.html" %}
{% load cms_tags %}
{% block base_content %}
{% placeholder template_1_content %}
{% endblock %}
Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.
База данных и миграции
Чтобы инициировать (или создать) базу данных для нового проекта, выполните следующие команды:
python manage.py syncdb --all
python manage.py migrate --fake
Затем выполните проверку целостности компонентов:
python manage.py cms check
# OVERALL RESULTS
# ===============
# 1 checks skipped!
# 8 checks successful!
# Installation okay
Примечание: по мере необходимости для обновления запустите миграции, например:
python manage.py syncdb
python manage.py migrate
# Для миграции схемы:
python manage. py schemamigration dcms --auto
# ! Не забудьте заменить имя «dcms» именем своего проекта.
Запуск Django CMS
Чтобы увидеть Django CMS в действии, используйте тестовый сервер.
Чтобы запустить приложение, введите:
python manage.py runserver 0.0.0.0:8000
Затем посетите:
- Django CMS Home:
http://[IP сервера]:8000/en-us - Django CMS Admin:
http://[IP сервера]:8000/en-us/admin
Подготовка к производству
Завершив проект Django CMS и протестировав его, не следует полагаться на тестовый сервер, поставляемый вместе с приложением.
Для развертывания необходим полноценный сервер веб-приложений (например, Unicorn), желательно на инвертированном прокси-сервере, который будет выполнять первичную обработку запросов и распределять статические файлы [например, изображения].
Чтобы получить инструкции по подготовке к процессу производства, читайте одноименный раздел статьи «Настройка облачного сервера Ubuntu для работы веб-приложений Python».
Конспект команд
Ниже приведен конспект выполненных действий и использованных команд.
# Подготовьте систему и установите инструменты Python:
aptitude update
aptitude -y upgrade
aptitude install -y build-essential
aptitude install -y cvs subversion git-core mercurial
aptitude install python-setuptools python-dev python2.7-dev python-software-properties libpq-dev
aptitude install libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev
curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
export PATH="/usr/local/bin:$PATH"
pip install virtualenv
# Создайте виртуальную среду:
virtualenv django_env
cd django_env
source bin/activate
pip install git+git://github.com/divio/django-cms.git@develop#egg=django_cms
pip install psycopg2
pip install pillow
# Создайте проект Django CMS:
django-admin. py startproject dcms
cd dcms
Tags: Django, Django 1.6, Django CMS, Django CMS 3 Beta 3, django-admin, pillow, Python, Python Imaging Library, Ubuntu, VPS
djangocms-bootstrap · PyPI
Некоторые шаблоны и теги шаблонов для использования с django-CMS и Bootstrap3/Bootstrap4.
Django-CMS не зависит от внешнего интерфейса, и это хорошо. Однако в сочетании с Bootstrap3/4
структура меню не совсем подходит. Это связано с тем, что Bootstrap3/4 допускает только один уровень вложенного меню.
Рендеринг меню django-CMS
djangocms-bootstrap добавляет несколько измененных тегов шаблона, которые отображают существующее дерево страниц в
структура меню, подходящая для панели навигации в Bootstrap3/4.
С концепцией mobile first нет события наведения курсора, которое мы могли бы использовать для открытия раскрывающегося списка.
элемент, показывающий пункты подменю. Вместо этого пользователь должен нажать на пункт главного меню, чтобы
чтобы открыть раскрывающийся элемент. Теперь, однако, больше не будет различия между нажатием
на пункт меню, чтобы либо открыть раскрывающийся список, либо щелкнуть страницу, на которую ссылается это меню.
предмет.
В этом примере djangocms-bootstrap использует специальный тег шаблона для отображения панели навигации. Здесь
CMS стр. Каталог имеет троих детей. При нажатии на Каталог на панели навигации открывается раскрывающееся меню,
который содержит еще одну запись для Каталог . Это ссылка, которая отправляет нас на нужную страницу.
Используя этот подход, мы можем перемещаться по дереву страниц django-CMS, не используя
эффект наведения мыши для открытия раскрывающихся меню.
Использование
Визуализация панели навигации для отображения меню для навигации по дереву страниц в django-CMS :
{% загрузить bootstrap_tags%}
<дел>
<навигационная роль="навигация">
<ул>
{% main_menu "bootstrap4/menu/navbar. html" %}