如何安装和开始使用FeinCMS
介绍
基于 Django 的 内容管理系统 (CMS) 可用的几个流行选项之一是 FeinCMS。 作为 Django 升级意义上的更多框架,可以使用 FeinCMS 简单地创建相对复杂的网站和应用程序。
在这篇 DigitalOcean 文章中,我们将向您介绍这个有趣的工具,并向您展示如何开始使用 FeinCMS 内容管理系统框架。
词汇表
1. Django 简介
2. FeinCMS
- FeinCMS 优势
3. 入门:准备你的 Ubuntu Droplet
4. 安装 FeinCMS
- Python 虚拟环境
- 安装 FeinCMS 及其依赖项
5. 使用 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 本质上是最灵活的一个。
- Customisable: 所有内容类型都是用户(即 开发人员)创建和铸造 - 因此使 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 及其依赖项
运行以下命令以使用 pip
安装 feincms_env:
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 添加为 安装的应用程序 ,然后决定要使用的数据库引擎。
让我们使用 nano 文本编辑器编辑 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
)
运行以下命令以使用 nano 编辑 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。 它需要定义模型才能工作。 因此,在创建数据库模式之前,我们需要定义模型。
执行以下命令开始编辑我们创建的 cms
Django 应用的 models.py
:
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)必须使用,最好是在一个反向代理之后,该代理将处理请求的初始处理和静态文件(例如图像)的分发。
要快速了解如何投入生产,请查看我们文章中标题为“准备投入生产”的部分:如何为 Python Web 应用程序准备 Ubuntu 云服务器。
概括
如果您已经阅读过本文一次,或者,如果您不喜欢一一复制粘贴命令,这里是安装说明的快速摘要,可帮助您开始配置:
# 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 ..