FeinCMS - это, как очевидно из названия, система управления содержимым сайта на базе фреймверка Django. Очень простая и очень удобная с точки зрения разработчика Django. Не перегруженная "батарейками в комплекте". Здесь я приведу минимальные действия для использования приложения. На самом деле, возможностей у этой CMS куда больше.
Сразу стоит сказать о том, что установка этой CMS - не N кликов мышью и - заработало. Но за это вы получаете бОльшую расширяемость на уровне фреймверка.
Для работы вам необходим Python версии 2.6 и больше с установленными пакетами pip и virtualenv, ибо это правильно. Также вам потребуется библиотека PIL, которую лучше собирать из бинарников.
$ cd /path/to/devarea
$ virtualenv --system-site-packages feincookie
$ source feincookie/bin/activate
или, последняя строка для Windows:
feincookie\Scripts\activate
Так мы создали наше рабочее окружение, чтобы не мешать другим проектам. Для новичков хочу заметить, что это - очень важно! Разберитесь, пожалуйста, с virtualenv. Так вам будет проще жить в мире Python.
При использовании --system-site-packages питон будет использовать системные библиотеки вместо локальных. Это требуется для пользователей Windows, так как установка валидного PIL в окружение для них - задача не тривиальная и здесь мы её рассматривать не будем.
Теперь качаем Django и создаем проект для неё:
$ pip install Django==1.4
$ cd feincookie
$ python bin/django-admin.py startproject feinpro
или, последняя строка для Windows:
python Scripts\django-admin.py startproject feinpro
Далее - устанавливаем еще пару пакетов:
$ pip install feincms
$ pip install django-mptt==0.4
Проверяем, что все наши усилия не напрасны:
$ pip freeze --local
Django==1.4
FeinCMS==1.7.4
django-mptt==0.4.0
Создаем нужную файловую структуру:
mkdir feinpro/static feinpro/media feinpro/templates
Далее - начинаем редактировать файлы django-проекта для интеграции с FeinCms. Вначале - feinpro/feinpro/settings.py. Добавляем имя файла для базы данных SQLite (вы, конечно можете определять другие настройки для себя):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/path/to/devarea/feincookie/feinpro/feinpro.db',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
Затем - добавляем настройки для локальной обработки медиа, статики и местоположения переопределенных шаблонов:
MEDIA_URL = '/media/'
MEDIA_ROOT = '/path/to/devarea/feincookie/feinpro/media'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/path/to/devarea/feincookie/feinpro/static',
)
TEMPLATE_DIRS = (
'/path/to/devarea/feincookie/feinpro/templates',
)
В переменной INSTALLED_APPS раскомментируем:
#...
'django.contrib.admin',
'django.contrib.admindocs',
#...
и добавим:
#...
'feincms',
'feincms.module.page',
'feincms.module.medialibrary',
'feinpro',
#...
Файл feinpro/feinpro/urls.py здесь приведу полностью, т.к. в нем больше изменений, чем нетронутых строк:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.views.generic.simple import direct_to_template
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'', include('feincms.urls')),
)
# for static processing
urlpatterns += staticfiles_urlpatterns()
# for media processing (ONLY FOR DEVELOPE!)
from django.conf import settings
if settings.DEBUG:
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
На этом подготовка завершена. Осталось лишь определить модели данных. Добавляем файл feinpro/feinpro/models.py следующего содержания:
# -*- coding: utf-8 -*-
from feincms.module.page.models import Page
from feincms.content.raw.models import RawContent
Page.register_extensions('navigation', 'seo', 'titles',)
Page.register_templates({
'title' : u'Стандартный шаблон',
'path' : 'base.html',
'regions' : (
('content', u'Содержимое',),
),
})
Page.create_content_type(RawContent)
Теперь создадим шаблон для наших страниц в feinpro/templates/base.html:
<!DOCTYPE html>
<html>
<head>
<title>{{ feincms_page.title }}</title>
<meta charset="utf-8">
</head>
<body>
{% for page in feincms_page.content.content %}
{{ page.render }}
{% endfor %}
</body>
</html>
На этом этапе мы уже имеем готовый минимальный проект на FeinCMS. Давайте запустим всю эту радость:
$ python feinpro\manage.py syncdb
$ python feinpro\manage.py runserver
Открываем браузер и вводим 127.0.0.1:8000/admin, наш логин и пароль при создании таблиц базы данных и видим админку, в которой появились два приложения, коих нет в коробке Django: medialibrary (для работы с загружаемыми пользователями файлами) и page (наши страницы). Попробуйте добавить страницу, а затем перейти по URL, указанном при создании этой страницы. Всё должно работать. Если что-то не работает или работает не так, проверьте еще раз все шаги или начните заново. Повторение - мать учения.
Комментариев нет:
Отправить комментарий