介绍
自从早期发布半年多年前以来,Django CMS(https://www.django-cms.org/en/)的版本3一直在不断发展中。最新可用的开发者包(Beta 3)带有您可以依赖的API的承诺 - 预计在发布 RC1 之后不会发生太大的变化。
在这篇DigitalOcean文章中,我们将看到如何安装和开始使用这种强大的内容管理系统(CMS),普通用户无法等待获得他们的手。
** 注意:** 如果您有兴趣安装 Django CMS 的当前稳定版本(截至 2014 年 3 月的 2 版),请参阅我们的文章: 如何设置和安装 Django CMS。
词典
1、 Django 和 Django CMS
- Django
- Django CMS
开始:准备你的UbuntuDropplet
安装 Django CMS 版本 3 Beta 3
- Python 虚拟环境 为 Django CMS
- Django CMS 和依赖
- 升级到版本 3 从版本 2
配置 Django CMS 3
- 创建一个新的项目
- 配置
settings.py
- 配置
urls.py
- 配置模板
- 数据库和迁移
- 运行 Django CMS
5、做好生产准备
六、总结
Django 和 Django 系统
迪安戈
Django是一个基于Python(http://python.org/)的编程语言的Web开发框架,是一个非常大的项目和库,它包装和运送了大量的工具和功能给那些期待着快速启动的开发人员。
Django的CMS
Django CMS是一个真正的开发者友好的内容管理系统和基于Django构建的Web开发框架,充分利用Django的先进功能,并提供一个可插入的开发界面来创建各种类型的网站。
作为一个成熟的和面向业务的应用程序,Django CMS知道什么是宝贵的。多年来,该项目专注于关键领域,使开发人员更容易地攻击该工具和系统管理员。
随着版本3的发布,Django CMS旨在改变游戏 - 如果你愿意 - 并提供一个显著改进的界面和令人印象深刻的功能集。
开始:准备您的Ubuntu VPS
Django CMS 是一个 Python 项目,你需要正确调节你的系统,以便在没有任何问题或错误的情况下设置和运行你的网站。
如果您尚未为此做好准备,请快速转到我们的Ubuntu/Python文章:
如何为Python Web应用程序准备Ubuntu云服务器**(http://link_to_11_1_ubuntu_python_prepare)
继续使用下面的 Django CMS 安装(或升级)说明。
安装 Django CMS 版本 3 Beta 3
用于 Django CMS 的 Python 虚拟环境
如果你还没有,创建一个虚拟环境:
1virtualenv django_env
2cd django_env
或者激活它:
1# Remember to enter the directory:
2# cd [django_env]
3source bin/activate
Django CMS 与依赖
由于 Django CMS 版本 3 尚未发布,我们需要从其 Git 存储库的开发分支机构安装该应用程序。
运行以下命令以使用pip
安装 Django CMS 3:
1pip install git+git://github.com/divio/django-cms.git@develop#egg=django_cms
安装您可能想要使用的任何数据库驱动程序,例如:
1# PostgreSQL:
2pip install psycopg2
最依赖的依赖性之一是Python Imaging Library(PIL)。PIL被Django CMS用来处理图像(例如剪辑、调整等)。
说到这一点,我们将避免直接安装PIL,并选择一个更适宜的PIL叉子称为pillow
。这个包是兼容的设置工具,并自动解决若干问题,如果我们试图使用 pil。
运行以下操作来安装 pillow:
1pip install pillow
从版本2升级到版本3
运行以下命令以使用pip
升级 Django CMS 3:
1pip install --upgrade git+git://github.com/divio/django-cms.git@develop#egg=django_cms
** 注意:** 对于升级,请注意,并非所有东西都是向后兼容的,因此,请查看 Version 3 Beta 博客帖子以获取一些额外的有用的升级提示。
配置 Django CMS 3
开始使用 Django CMS 是一个简单的过程,但它需要一些设置,我们将从启动配置开始,并创建一些您可以使用的示例模板文件。
创建一个新项目
作为一个基于Django的应用程序,Django CMS还提供一些自动化,管理和管理工具。
若要使用「django-admin」创建新项目,请执行以下操作:
1# Usage: python django-admin.py startproject [project name]
2# Example:
3django-admin.py startproject dcms
4
5# And enter the application directory:
6cd dcms
设置Settings.py
就像Django一样,我们需要通过settings.py
进行一些更改 - 主要配置文件。
运行以下命令以使用 nano 文本编辑器开始编辑 `settings.py’:
1# Usage: nano [project dir. name]/settings.py
2# Example:
3nano dcms/settings.py
复制并粘贴(或修改)下面的代码块到文件的顶部,以便有一个变量指向基础项目目录位置:
1# -*- coding: utf-8 -*-
2import os
3BASE_DIR = os.path.dirname(os.path.dirname(__file__))
4PROJECT_PATH = BASE_DIR
向下滚动,找到以 INSTALLED_APPS 开头的列。
更改它看起来如下,即:
1INSTALLED_APPS = (
2
3 # Additional plugin examples
4 # e.g.:
5 # Django CMS CK Editor:
6 # https://github.com/divio/djangocms-text-ckeditor
7 # 'djangocms_text_ckeditor',
8
9 # Django CMS:
10 'cms',
11
12 # Utilities:
13 'mptt',
14 'menus',
15 'south',
16 'sekizai',
17
18 # Other CMS modules:
19 'djangocms_admin_style',
20
21 # Django:
22 'django.contrib.admin',
23 'django.contrib.auth',
24 'django.contrib.contenttypes',
25 'django.contrib.sessions',
26 'django.contrib.messages',
27 'django.contrib.staticfiles',
28 'django.contrib.sites',
29
30)
继续,找到‘MIDDLEWARE_CLASSES’并将其修改为如下:
1MIDDLEWARE_CLASSES = (
2
3 # Django:
4 'django.contrib.sessions.middleware.SessionMiddleware',
5 'django.middleware.common.CommonMiddleware',
6 'django.middleware.csrf.CsrfViewMiddleware',
7 'django.contrib.auth.middleware.AuthenticationMiddleware',
8 'django.contrib.messages.middleware.MessageMiddleware',
9 'django.middleware.clickjacking.XFrameOptionsMiddleware',
10 'django.middleware.locale.LocaleMiddleware',
11 'django.middleware.doc.XViewMiddleware',
12
13 # Django CMS:
14 'cms.middleware.page.CurrentPageMiddleware',
15 'cms.middleware.user.CurrentUserMiddleware',
16 'cms.middleware.toolbar.ToolbarMiddleware',
17 'cms.middleware.language.LanguageCookieMiddleware',
18
19)
下一步是添加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 'cms.context_processors.media',
10 'sekizai.context_processors.sekizai',
11
12)
最后,去这个文件的底部,并找到行 STATIC_URL
. 删除它,并添加以下内容以满足您的需求:
1SITE_ID = 1
2
3STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
4STATIC_URL = '/static/'
5
6MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
7MEDIA_URL = '/media/'
8
9TEMPLATE_DIRS = (
10
11 # List of template directories.
12 # Example:
13 os.path.join(PROJECT_PATH, 'templates'),
14
15)
16
17CMS_TEMPLATES = (
18
19 # List of templates.
20 # Example:
21 ('template_1.html', 'Template One'),
22
23)
24
25LANGUAGES = (
26
27 # List of languages.
28 # Example:
29 ('en-us', 'English'),
30
31)
保存和退出,按 CTRL + X 并用 Y 确认。
配置 urls.py
下一步是设置一些URL,这些URL配置在urls.py
文件中。
运行以下操作以使用 nano 开始编辑 `urls.py’:
1# Usage: nano [project dir. name]/urls.py
2# Example:
3nano dcms/urls.py
将内容替换为类似于以下示例的内容:
1# Django CMS 2:
2# from django.conf.urls.defaults import *
3# Django CMS 3:
4from django.conf.urls import patterns, include, url
5
6from django.conf.urls.i18n import i18n_patterns
7from django.contrib import admin
8from django.conf import settings
9
10admin.autodiscover()
11
12urlpatterns = i18n_patterns('',
13 url(r'^admin/', include(admin.site.urls)),
14 url(r'^', include('cms.urls')),
15)
16
17if settings.DEBUG:
18 urlpatterns += patterns('',
19 url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
20 {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
21 url(r'', include('django.contrib.staticfiles.urls')),
22) + urlpatterns
保存和退出,按 CTRL + X 并用 Y 确认。
配置 template
在创建数据库并测试我们的安装(或升级)之前,让我们创建一些模板。
注: 请确保先定义settings.py
文件中的模板,然后相应地创建它们。
运行以下操作来创建模板目录和文件:
1mkdir templates
2touch templates/base.html
3touch templates/template_1.html
使用 nano 编辑templates/base.html
:
1nano templates/base.html
以以下例子:
1{% load cms_tags sekizai_tags %}
2<html>
3 <head>
4 {% render_block "css" %}
5 </head>
6 <body>
7 {% cms_toolbar %}
8 {% placeholder base_content %}
9 {% block base_content %}{% endblock %}
10 {% render_block "js" %}
11 </body>
12</html>
保存和退出,按 CTRL + X 并用 Y 确认。
使用 nano 编辑 templates/template_1.html
:
1nano templates/template_1.html
以以下例子:
1{% extends "base.html" %}
2{% load cms_tags %}
3
4{% block base_content %}
5 {% placeholder template_1_content %}
6{% endblock %}
保存和退出,按CTRL+X
并用Y
确认。
数据库与移民
对于新项目安装,运行以下命令来启动(或设置)数据库:
1python manage.py syncdb --all
2python manage.py migrate --fake
并执行一些完整性检查:
1python manage.py cms check
2
3# OVERALL RESULTS
4# ===============
5
6# 1 checks skipped!
7# 8 checks successful!
8
9# Installation okay
** 注意:** 对于升级,根据需要运行迁移,例如:
1python manage.py syncdb
2python manage.py migrate
3
4# For schema migrations:
5python manage.py schemamigration dcms --auto
6
7# ! Remember to replace dcms with your project name.
使用 Django CMS
为了看到您的 Django CMS 在行动中,您可以使用测试服务器。
运行以下命令来运行您的应用程序:
1python manage.py runserver 0.0.0.0:8000
并参观:
- Django CMS Home:
HTTP 地址: 8000/en-us
- Django CMS 管理员:
HTTP 地址: 8000/en-us/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 django_env
15cd django_env
16source bin/activate
17pip install git+git://github.com/divio/django-cms.git@develop#egg=django_cms
18pip install psycopg2
19pip install pillow
20
21# Create a Django CMS project:
22django-admin.py startproject dcms
23cd dcms