介绍
其中一个为Django的基于内容管理系统 (CMS)的几种流行的可用选项是FeinCMS 。 作为一个在Django升级意义上的框架,可以使用FeinCMS简单地创建相对复杂的网站和应用程序。
在这篇DigitalOcean文章中,我们将向您介绍这个有趣的工具,并向您展示如何开始使用FeinCMS内容管理系统框架。
词汇表
Django简介
2.FeinCMS
- FeinCMS的优点
3.入门:准备您的Ubuntu Droplet
4.安装FeinCMS
- Python虚拟环境
- 安装FeinCMS及其依赖
使用FeinCMS
- 创建项目
- 启动FeinCMS作为Django应用程序
- 配置项目设置(
settings.py
) - 配置的URL(
urls.py
) - 创建第一个模型
- 启动数据库
- 创建模板
- 测试应用程序
- 创建您的第一个内容
6.准备生产
7.总结
Django简介
Django是一个Python的编程语言的基于Web的开发框架。 作为一个非常大的项目和图书馆,它包装和发运大量的工具和功能的开发人员谁期待着快速开始。
FeinCMS
FeinCMS在技术上更多的是一个框架,而不是一个简单的内容管理系统。 该工具本身试图提供一个良好的基础与许多额外的功能 - 与帮助者在标准的Django之上,开发人员创建网站容易,而无需参考许多额外的附加组件。
与传统的CMS工具不同,使用FeinCMS需要一点点使用。 但是,这带来了很多的灵活性,只是因为某些复杂的任务变得更容易实现与该工具。 例如,为了使用FeinCMS,您必须定义数据类型(即内容数据),如果需要这样复杂的操作,这可能是您开发应用程序的工具。
虽然您需要做一些额外的工作来获得您特别需要的,FeinCMS的助手,像即开即用的管理区域,使其非常适合管理您的自定义内容。
FeinCMS的优点
灵活:在所有基于Django的CMS系统,FeinCMS是最灵活的天性。
定制:所有内容类型的用户(即开发商)创建并铸造-因此呈现FeinCMS高度可定制的。
有据可查的:虽然不是最好的,FeinCMS文档相对较好。
功能丰富:FeinCMS提取了大量的复杂性从多任务的开发商。
入门:准备您的Ubuntu Droplet
FeinCMS是一个Python项目,您需要准确地准备您的系统,以便设置和运行您的网站以坚实的方式。
如果你没有你的VPS准备好,快速回到我们的Ubuntu / Python文章:
并继续下面的FeinCMS安装说明。
安装FeinCMS
我们要充分利用Python的virtualenv中的安装和设置FeinCMS,其依赖在一起。 在本节中,我们将开始创建一个环境并继续。
Python虚拟环境
如果您还没有创建虚拟环境:
virtualenv feincms_env
cd feincms_env
并激活环境:
source bin/activate
安装FeinCMS及其依赖
运行以下命令来安装feincms_env使用pip
:
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应用程序。
运行以下命令以创建FeinCMS Django应用程序:
python manage.py startapp cms
配置项目的设置(settings.py)
与Django CMS类似,我们需要配置我们创建的Django项目。 这将主要包括添加FeinCMS作为安装的应用程序 ,然后决定数据库引擎使用的。
让我们编辑settings.py
使用纳米文本编辑器文件中:
nano feincms_app/settings.py
向下滚动文件,找到段名为INSTALLED_APPS
并改变它:
# From this:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
)
# To this:
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 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。 它需要定义模型才能工作。 因此,在创建数据库模式之前,我们需要定义模型。
执行下面的命令来启动编辑models.py
的cms
,我们创建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
您可以通过访问您的Droplet上的FeinCMS的管理部分检查您的安装:
http://[your droplet's IP]:8000/admin
注意:要终止测试服务器,按CTRL+C
。
创建您的第一个内容
访问管理员部分,转到:
http://[your droplet's IP]:8000/admin
使用您设置的管理员凭据登录,然后按“登录”。
注意:您可能需要使用默认设置在登录- admin
和admin
分别。
通过按列表上“页面”旁边的“添加”按钮创建页面。
就这样!
准备好生产
当您完成创建Django CMS项目时,您应该尽量避免依赖于应用程序附带的测试服务器。
对于部署,必须使用完全成熟的Web应用程序服务器(例如Unicorn),优选在逆向代理之后,它将处理请求的初始处理和静态文件(例如图像)的分发。
要了解如何去生产,检查出部分的标题上我们的文章“获得可用于生产”快捷总体思路: 如何准备Ubuntu的云服务器对于Python Web的应用程序 。
概要
如果您已经阅读了本文一次,或者,如果您不喜欢复制粘贴命令一个一个,这里是一个安装说明的快速摘要,让您开始直到配置:
# Preare the system and install Python tools:
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
# Create a virtual environment:
virtualenv feincms_env
cd feincms_env
source bin/activate
pip install feincms
# Create a CMS project:
django-admin.py startproject feincms_app
cd feincms_app
python manage.py startapp cms
# And continue with configurations ..