介绍
一个基于Django的内容管理系统(CMS)的几种流行的选项之一是FeinCMS(http://www.feincms.org/)。
在这篇DigitalOcean文章中,我们将向您介绍这个有趣的工具,并向您展示如何开始使用FeinCMS内容管理系统框架。
词典
简介: Django 简介
二、精彩
- FeinCMS 优点
开始:准备你的UbuntuDropplet
4、安装FeinCMS
- Python 虚拟环境
- 安装 FeinCMS 及其依赖
与FeinCMS合作
- 创建一个项目
- 启动 FeinCMS 作为 Django 应用程序
- 配置项目设置 (
settings.py
) - 配置 URL (
urls.py
) - 创建第一个模型
- 启动数据库
- 创建模板
- 测试应用程序
- 创建你的第一个内容
六、做好生产准备
七、总结
Django 简介
Django是一个基于Python(http://python.org/)的编程语言的Web开发框架,是一个非常大的项目和库,它包装和运送了大量的工具和功能给那些期待着快速启动的开发人员。
好奇心
FeinCMS在技术上更像是一个框架,而不是一个简单的内容管理系统. 该工具本身试图提供一个良好的基础,有很多额外的功能 - 以及助手 - 除了标准的Django,开发人员可以轻松地创建网站,而无需参考许多额外的插件。
与传统的 CMS 工具不同,使用 FeinCMS 需要稍微加以使用,但这带来了很大的灵活性,因为某些复杂的任务变得更容易实现,例如,为了使用 FeinCMS,您必须定义数据类型(即内容数据),如果您需要如此复杂的操作,这可能是您开发应用程序的工具。
虽然您需要做一些额外的工作来获得您具体需要的内容,但FeinCMS的助手,如盒子外的可用管理区域,可以很好地管理您的自定义内容。
FeinCMS 优点
- 灵活: 在所有基于Django的CMS系统中,FeinCMS是最灵活的系统。
- 可定制: 所有内容类型都是用户(即开发人员)创建和设计的,因此使FeinCMS高度可定制。
开始:准备您的UbuntuDropplet
FeinCMS是一个Python项目,您需要正确地准备您的系统,以便以坚实的方式设置和运行您的网站。
如果您尚未准备好VPS,请快速转到我们的Ubuntu/Python文章:
继续使用下面的 FeinCMS 安装说明。
安装 FeinCMS
我们将使用Python _virtualenv_来安装和设置FeinCMS,以及它的依赖性。
Python 虚拟环境
如果你还没有,创建一个虚拟环境:
1virtualenv feincms_env
2cd feincms_env
让环境激活:
1source bin/activate
安装FeinCMS及其依赖性
运行以下命令以使用pip
安装 feincms_env:
1pip install feincms
2
3# Successfully installed feincms Django django-mptt Pillow feedparser
安装您可能想要使用的任何数据库驱动程序,例如:
1# PostgreSQL:
2# pip install psycopg2
3
4# MySQL:
5# pip install mysql-python
6
7# Note: For additional DB drivers, remember
8# to install OS level DB packages.
与FeinCMS合作
创建一个项目
与FeinCMS合作几乎与常规的Django项目相同。
按照下面的指示创建新项目:
1# Usage: django-admin.py startproject [project name]
2# Example:
3django-admin.py startproject feincms_app
4
5# Enter the application directory:
6cd feincms_app
启动 FeinCMS 作为 Django 应用程序
接下来,我们需要启动 FeinCMS 作为一个 Django 应用程序 before 配置我们创建的新 Django 项目。
运行以下操作来创建 FeinCMS Django 应用程序:
1python manage.py startapp cms
配置项目设置(settings.py)
类似于Django CMS,我们需要配置我们创建的Django项目,这将主要包括添加FeinCMS作为安装的应用程序,然后决定使用的数据库引擎。
让我们用 nano 文本编辑器编辑 settings.py
文件:
1nano feincms_app/settings.py
向下滚动,找到名为INSTALLED_APPS
的部分,并更改它:
1# From this:
2
3INSTALLED_APPS = (
4 'django.contrib.admin',
5 'django.contrib.auth',
6 'django.contrib.contenttypes',
7 'django.contrib.sessions',
8 'django.contrib.messages',
9 'django.contrib.staticfiles',
10)
11
12# To this:
13
14INSTALLED_APPS = (
15
16 # FeinCMS:
17 'feincms',
18 'feincms.module.page',
19 'feincms.module.medialibrary',
20 'cms',
21
22 # Django Standard:
23 'django.contrib.admin',
24 'django.contrib.auth',
25 'django.contrib.contenttypes',
26 'django.contrib.sessions',
27 'django.contrib.messages',
28 'django.contrib.staticfiles',
29
30)
注: 如果django.contrib.admin
被评论(#django.contrib.admin
),请评论它。
下一步是添加TEMPLATE_CONTEXT_PROCESSORS
设置。
将下面的代码附加到文件中:
1TEMPLATE_CONTEXT_PROCESSORS = (
2
3 'django.contrib.auth.context_processors.auth',
4 'django.contrib.messages.context_processors.messages',
5 'django.core.context_processors.i18n',
6 'django.core.context_processors.request',
7 'django.core.context_processors.media',
8 'django.core.context_processors.static',
9
10)
预配置的数据库引擎是 SQLite 3. 如果您想使用不同于标准的数据库引擎,您还需要在这里配置和定义它。
1# Default SQLite:
2DATABASES = {
3 'default': {
4 'ENGINE': 'django.db.backends.sqlite3',
5 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
6 }
7}
8# PostgreSQL example:
9# DATABASES = {
10# 'default': {
11# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
12# 'NAME': 'name',
13# 'USER': 'user_name',
14# 'PASSWORD': 'pwd',
15# 'HOST': 'host.add.ress',
16# 'PORT': '5432',
17# }
18# }
完成数据库设置后,是时候定义一些模板目录了。
将下列行添加到文件中适当的地方:
1TEMPLATE_DIRS = (
2
3 # List of template directories.
4 # Example:
5 os.path.join(BASE_DIR, 'templates'),
6
7)
保存和退出此文件,按 CTRL + X 并用 Y 确认。
配置 URL (urls.py
)
运行以下操作以使用 nano 编辑 urls.py
配置文件:
1nano feincms_app/urls.py
替换内容以类似于下面的东西,适合您的需求:
1import os
2
3from django.conf.urls import patterns, include, url
4from django.conf.urls.i18n import i18n_patterns
5from django.contrib import admin
6from django.contrib.staticfiles.urls import staticfiles_urlpatterns
7
8admin.autodiscover()
9
10urlpatterns = patterns('',
11
12 url(r'^admin/', include(admin.site.urls)),
13 url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
14 'document_root': os.path.join(os.path.dirname(__file__), 'media/')}),
15 url(r'', include('feincms.contrib.preview.urls')),
16 url(r'', include('feincms.urls'))
17
18) + staticfiles_urlpatterns()
保存和退出文件,按CTRL+X
并用Y
确认。
创建第一个模型
正如我们在开始时所提到的,FeinCMS 更像是一个框架,而不是一个简单的、全部提取的 CMS. 它需要定义模型才能工作。
运行下面的命令,开始编辑我们创建的cms
Django应用程序的models.py
:
1nano cms/models.py
然后用以下内容替换文件的内容,以创建一个新模型:
1from feincms.module.page.models import Page
2from django.utils.translation import ugettext_lazy as _
3from feincms.content.richtext.models import RichTextContent
4
5Page.register_templates({
6 'title': _('General FeinCMS Template Example'),
7 'path': 'template1.html',
8 'regions': (
9 ('header', _('Page header.')),
10 ('main', _('Main content area.')),
11 ('sidebar', _('Sidebar'), 'inherited'),
12 ('footer', _('Page footer.')),
13 ),
14})
15
16Page.create_content_type(RichTextContent)
保存和退出,按 CTRL + X 并用 Y 确认。
** 注意:** 有关页面模型的更多信息,请参阅官方文档以获取详细示例: FeinCMS 页面模块。
启动数据库
配置完成后,是时候启动数据库并创建模型/数据库方案了。
运行以下操作来创建数据库:
1python manage.py syncdb
执行此命令后,您将被问到一系列问题,例如:
1# You just installed Django's auth system,
2# which means you don't have any superusers defined.
3# Would you like to create one now? (yes/no):
4yes
5# ^^ Create an admin account by answering the questions.
6# For testing purposes you can opt for:
7# Username: admin
8# Password: admin
建造寺庙
让我们创建我们的模板模型,它将用于从上一个步骤中渲染模型。
创建 Templates 目录:
1mkdir feincms_app/templates
运行以下操作以使用 nano 创建第一个模板文件:
1nano feincms_app/templates/template1.html
并复制并粘贴下面的模板内容,以适应您的需求:
1<div id="header">
2 {% block header %}
3 {% for content in feincms_page.content.header %}
4 {{ content.render }}
5 {% endfor %}
6 {% endblock %}
7</div>
8
9<div id="content">
10 {% block content %}
11 {% for content in feincms_page.content.main %}
12 {{ content.render }}
13 {% endfor %}
14 {% endblock %}
15</div>
16
17<div id="sidebar">
18 {% block sidebar %}
19 {% for content in feincms_page.content.sidebar %}
20 {{ content.render }}
21 {% endfor %}
22 {% endblock %}
23</div>
24
25<div id="footer">
26 {% block footer %}
27 {% for content in feincms_page.content.footer %}
28 {{ content.render }}
29 {% endfor %}
30 {% endblock %}
31</div>
保存和退出,按CTRL+X
并用Y
确认。
测试应用程序
运行以下命令来运行样本应用程序服务器:
1python manage.py runserver 0.0.0.0:8000
您可以通过访问 FeinCMS 的管理部分来检查您的安装:
1http://[your droplet's IP]:8000/admin
注: 要终止测试服务器,请按CTRL+C
。
创建你的第一个内容
请访问 admin 部分,转到:
1http://[your droplet's IP]:8000/admin
使用您已设置的管理员凭证登录并按登录
。
** 注意: ** 您可能需要使用登录的默认设置 - 分别是admin
和admin
。
创建页面,点击列表中的页面
旁边的添加
按钮。
而这就是它!
准备好生产
当您完成创建 Django CMS 项目时,您应该尽量避免依赖应用程序提供的测试服务器。
对于部署,必须使用一个完整的Web应用程序服务器(例如Unicorn),最好是背后的反向代理程序,以处理请求的初始处理和静态文件(如图像)的分发。
要快速了解如何进入生产,请参阅我们的文章如何准备Ubuntu云服务器用于Python Web应用程序
的部分标题。
摘要
如果你已经通过了这篇文章一次,或者,如果你不喜欢一个接一个的复制传输命令,这里是一个快速总结的安装说明,让你开始到配置:
1# Preare the system and install Python tools:
2aptitude update
3aptitude -y upgrade
4aptitude install -y build-essential
5aptitude install -y cvs subversion git-core mercurial
6aptitude install python-setuptools python-dev python2.7-dev python-software-properties libpq-dev
7aptitude install libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev
8curl https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py | python -
9curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python -
10export PATH="/usr/local/bin:$PATH"
11pip install virtualenv
12
13# Create a virtual environment:
14virtualenv feincms_env
15cd feincms_env
16source bin/activate
17pip install feincms
18
19# Create a CMS project:
20django-admin.py startproject feincms_app
21cd feincms_app
22python manage.py startapp cms
23
24# And continue with configurations ..