如何安装和开始使用FeinCMS

来自菜鸟教程
跳转至:导航、​搜索

介绍

基于 Django 的 内容管理系统 (CMS) 可用的几个流行选项之一是 FeinCMS。 作为 Django 升级意义上的更多框架,可以使用 FeinCMS 简单地创建相对复杂的网站和应用程序。

在这篇 DigitalOcean 文章中,我们将向您介绍这个有趣的工具,并向您展示如何开始使用 FeinCMS 内容管理系统框架。

词汇表

1. Django 简介

2. FeinCMS

  1. FeinCMS 优势

3. 入门:准备你的 Ubuntu Droplet

4. 安装 FeinCMS

  1. Python 虚拟环境
  2. 安装 FeinCMS 及其依赖项

5. 使用 FeinCMS

  1. 创建项目
  2. 启动 FeinCMS 作为 Django 应用程序
  3. 配置项目的设置 (settings.py)
  4. 配置 URL (urls.py)
  5. 创建第一个模型
  6. 启动数据库
  7. 创建模板
  8. 测试应用程序
  9. 创建您的第一个内容

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

使用您设置的管理员凭据登录,然后按“登录”。

注意: 您可能需要分别使用默认登录 - adminadmin

按列表中“页面”旁边的“添加”按钮创建页面。

就是这样!

准备生产

完成创建 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 ..

提交人: [[“%3Ca|https]] ://twitter.com/ostezer [[“%3C/a|”>操作系统]] 泰泽