Установка и начало работы с FeinCMS

Вступление

Одна из наиболее популярных систем управления контентом (CMS) на основе Django – это FeinCMS. Став своеобразным фреймворком за счет модернизации Django, FeinCMS позволяет без труда создавать относительно сложные веб-сайты и приложения.

Данная статья знакомит с основами использования фреймворка системы управления контентом FeinCMS.

Вкратце о Django

Django – это фреймворк, основанный на языке программирования Python. Будучи весьма объемным проектом и библиотекой, он способен упаковывать и отправлять огромное количество инструментов и функций для быстрой разработки веб-проекта.

Что такое FeinCMS?

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

В отличие от обычных систем управления контентом, к работе с FeinCMS нужно привыкнуть. Тем не менее, этот инструмент очень гибок, так как способен значительно упростить выполнение определенных сложных задач. К примеру, при работе с FeinCMS нужно определить типы данных (то есть, содержания).

Не смотря на то, что для получения нужного результата нужно выполнять некоторую дополнительную работу, «помощники» FeinCMS ускорят и упростят процесс управления пользовательским контентом.

Преимущества FeinCMS

  • Гибкость: по сравнению с остальными система управления контентом на основе Django, FeinCMS является самой гибкой.
  • Настраиваемость: все типы контента создаются разработчиком, потому FeinCMS легко настраиваема.
  • Хорошая документация: документация FeinCMS относительно хороша (хотя не является наилучшей).
  • Многофункциональность: FeinCMS значительно упрощает работу пользователей, выполняющих большое количество сложных задач.

Начало работы: подготовка сервера Ubuntu

FeinCMS – это проект Python, потому для разработки и запуска веб-сайта систему нужно подготовить.

Чтобы подготовить VPS к работе , прочтите статью:

  • Подготовка облачного сервера Ubuntu к работе приложений Python

Затем установите FeinCMS при помощи приведенных ниже инструкций.

Установка FeinCMS

Для установки FeinCMS понадобится инструмент Python virtualenv вместе с его зависимостями. В данном разделе описано создание среды.

Виртуальная среда Python

Создайте виртуальную среду, если ее еще нет:

virtualenv feincms_env
cd         feincms_env

Активируйте ее:

source bin/activate

Установка FeinCMS и ее зависимостей

Для установки FeinCMS запустите следующую команду:

pip install feincms
# Successfully installed feincms Django django-mptt Pillow feedparser

Затем установите любой драйвер базы данных, например:

# PostgreSQL:
# pip install psycopg2
# MySQL:
# pip install mysql-python
# Note: For additional DB drivers, remember
#       to install OS level DB packages.

Работа с FeinCMS

Создание проекта

Работа с FeinCMS почти ничем не отличается от работы с обычным проектом Django.

Чтобы создать новый проект, следуйте инструкциям:

# Usage: django-admin.py startproject [project name] # Example:
django-admin.py startproject feincms_app
# Enter the application directory:
cd feincms_app

Запуск FeinCMS как приложения Django

Прежде чем начать конфигурировать новый проект Django, нужно запустить FeinCMS как приложение Django.

python manage.py startapp cms

Настройка параметров проекта (settings.py)

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

Сначала нужно отредактировать файл «settings.py» с помощью текстового редактора «nano»:

nano feincms_app/settings.py

Прокрутив данный файл, найдите раздел под названием «INSTALLED_APPS» и отредактируйте его:

# Замените данный отрезок:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)
# этим:
INSTALLED_APPS = (
# FeinCMS:
'feincms',
'feincms.module.page',
'feincms.module.medialibrary',
'cms',
# Django Standard:
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)

Примечание: если django.contrib.admin закомментирован (то есть, выглядит так: # django.contrib.admin), раскомментируйте его.

Затем нужно внести параметры 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',
)

Предварительно настроенное ядро базы данных – это SQLite 3. При необходимости использовать другое ядро необходимо настроить и задать его здесь. Прокрутите файл и найти раздел конфигураций DATABASES. Найдя его, отредактируйте по мере необходимости, например:

# Default SQLite:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# PostgreSQL example:
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.postgresql_psycopg2',
#         'NAME': 'name',
#         'USER': 'user_name',
#         'PASSWORD': 'pwd',
#         'HOST': 'host.add.ress',
#         'PORT': '5432',
#     }
# }

Завершив настройку базы данных, задайте каталоги шаблонов.

Внесите следующую строку в файл:

TEMPLATE_DIRS = (
# List of template directories.
# Example:
os.path.join(BASE_DIR, 'templates'),
)

Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.

Настройка URL-адресов (urls.py)

Для редактирования конфигурационного файла urls.py с помощью nano запустите следующее:

nano feincms_app/urls.py

Замените содержимое подходящим отрывком, подобным приведенному ниже:

import os
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': os.path.join(os.path.dirname(__file__), 'media/')}),
url(r'', include('feincms.contrib.preview.urls')),
url(r'', include('feincms.urls'))
) + staticfiles_urlpatterns()

Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.

Создание первой модели

Как уже было сказано в начале статьи, FeinCMS – скорее фреймворк, чем простая CMS. Для работы FeinCMS нужно задать модели, прежде чем создавать схему данных.

Чтобы отредактировать файл «models.py» созданного приложения Django, выполните команду:

nano cms/models.py

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

from feincms.module.page.models import Page
from django.utils.translation import ugettext_lazy as _
from feincms.content.richtext.models import RichTextContent
Page.register_templates({
'title': _('General FeinCMS Template Example'),
'path': 'template1.html',
'regions': (
('header', _('Page header.')),
('main', _('Main content area.')),
('sidebar', _('Sidebar'), 'inherited'),
('footer', _('Page footer.')),
),
})
Page.create_content_type(RichTextContent)

Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.

Примечание: чтобы узнать о моделях страниц больше, прочтите официальную документацию FeinCMS.

Запуск базы данных

После внесения всех конфигураций нужно запустить базу данных и создать схему модели/данных.

Для создания базы данных выполните следующее действие:

python manage.py syncdb

После выполнения команды появится ряд вопросов, например:

# You just installed Django's auth system,
# which means you don't have any superusers defined.
# Would you like to create one now? (yes/no):
yes
# ^^ Create an admin account by answering the questions.
# For testing purposes you can opt for:
# Username: admin
# Password: admin

Создание шаблона

Теперь создайте шаблон модели, который будет использован для воспроизведения предыдущей модели.

Создайте каталог шаблонов:

mkdir feincms_app/templates

Для создания первого файла шаблона при помощи nano запустите следующее:

nano feincms_app/templates/template1.html

Затем скопируйте и вставьте содержание шаблона, изменяя его согласно вашим потребностям:

<div id="header">
{% block header %}
{% for content in feincms_page.content.header %}
{{ content.render }}
{% endfor %}
{% endblock %}
</div>
<div id="content">
{% block content %}
{% for content in feincms_page.content.main %}
{{ content.render }}
{% endfor %}
{% endblock %}
</div>
<div id="sidebar">
{% block sidebar %}
{% for content in feincms_page.content.sidebar %}
{{ content.render }}
{% endfor %}
{% endblock %}
</div>
<div id="footer">
{% block footer %}
{% for content in feincms_page.content.footer %}
{{ content.render }}
{% endfor %}
{% endblock %}
</div>

Сохраните изменения и выйдите из файла, нажав CTRL+X и Y для подтверждения.

Тестирование приложения

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

python manage.py runserver 0.0.0.0:8000

Чтобы проверить правильность установки, посетите раздел администратора FeinCMS на сервере:

http://[IP_сервера]:8000/admin

Примечание: чтобы покинуть тестовый сервер, нажмите клавиши CTRL + C.

Создание контента

Посетите раздел администратора, перейдя по ссылке:

http://[IP сервера]:8000/admin

Введите учетные данные администратора и нажмите «Log In».

Примечание: возможно, придется использовать данные для входа в систему по умолчанию – «admin» и «admin» соответственно.

Создайте страницу, нажав кнопку «Add», что находится рядом с кнопкой «Pages».

Готово!

Подготовка к производству

Завершив работу над созданием проекта в Django CMS, постарайтесь не использовать тестовый сервер, идущий вместе с приложением.

Для развертывания нужно использовать полноценный сервер веб-приложений (например, Unicorn), предпочтительно на основе инвертированного прокси-сервера, который будет выполнять первичную обработку запросов и распределение статических файлов (например, изображений).

Конспект команд

Ниже приведен краткий конспект инструкций по установке, содержащий все нужные команды и конфигурации:

# Подготовьте систему и установите утилиты 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 feincms_env
cd feincms_env
source bin/activate
pip install feincms
# Создайте проект CMS:
django-admin.py startproject feincms_app
cd feincms_app
python manage.py startapp cms
# Внесите конфигурации ..

Tags: , , , , ,

Добавить комментарий