最近想用Django-shop做个网店,哪知道遇到坑。回过头来仔细看看CMS框架。没见到相关的资料,实在不能忍,自己翻译一下。
注意,这篇教程是针对想在自己Django项目加入DjangoCMS的。以及手动安装详细了解CMS配置过程的。没有这个想法的请绕过
一、怎么手动安装 CMS
最简单安装CMS的方法是用DjangoCMS自己的安装器,推荐用这种方式来开始一个工程,其他教程就是用这种方式安装
如果你偏爱手动安装,那么你来对地方了,这篇文章带你走这段旅程
Note
如果你想把CMS作为你自己项目的一部分,这个教程能够提供这方面的帮助。当然是有条件的,你的项目必须是空项目。你只要紧跟教程的步伐,你就可以达到目的
读这篇教程你最好了解Python和Django,一旦你把CMS集成到你自己项目中了,那么你就可以在CMS中开发了
Install the django CMS package
首先检查一下你安装的CMS要求的Python和Django的版本。这很重要
CMS其他依赖都在都在Setup.py文件里了
Important
强烈建议用虚拟环境来安装CMS,如何创建激活和处置虚拟环境,请自行百度。如果不会,getstarted文档有个简单的介绍,不过建议学点虚拟环境的基本用法。
virtualenv django-cms-site # create a virtualenv
创建虚拟环境
source django-cms-site/bin/activate # activate it
激活命令
In an activated virtualenv, run:
在激活的虚拟环境里输入命令
pip install --upgrade pip
最好把pip升级到最终版本,这样子可以减少一些依赖
Then:
pip install django-cms
安装最新版的CMS
django-admin.py startproject myproject
创建一个工程
如果你没见过这个命令,请移步Django的教程,要不你会跟不上节奏
myproject
myproject
__init__.py
settings.py
urls.py
wsgi.py
manage.py
应用和设置中最小的要求
在编辑器中打开工程目录中的setting.py
INSTALLED_APPS
在INSTALLED_APPS域添加下面的app
'django.contrib.sites',
'cms',
'menus',
'treebeard',
CMS 会用django.contrib.sites 这个framework. 要设置一下SITE_ID = 1
cms and menus 是CMS的核心模块
django-treebeard 是Django的包,用来管理CMS的页面和树构架
django CMS 安装 django CMS 管理风格. 这个风格作用是管理页面里面的各个组件愉快合作。从技术上来讲,这是个可选组件,你的工程可能不需要,不过强烈推荐
在 INSTALLED_APPS里, 在django.contrib.admin的前面增加:
'djangocms_admin_style',
语言设置
django CMS要求你设置语言,并且列出你项目可能用到的各种语言,填写位置在LANGUAGE_CODE.
一个实例,结构是list里面的tuple
LANGUAGES = [
('en', 'English'),
('de', 'German'),
]
这里注意一点,设置的en是en-us的简写)
数据库
django CMS需要后台数据库的支持。你可用Python自带的SQlite数据库,省去安装和设置的麻烦。正常情况下,一个产品是不会用SQlite的,但是对开发阶段就是个理想的选择,因为Django已经为你设置好了一切。
Note
在部属阶段,你最好用PostgreSQL或者MySql,为了产品的发布做准备。我们这里不讨论安装和运营数据库,其他专门网站会详细介绍。不管你用什么数据库,都需要安装相应的python接口。例如
pip install psycopg2 # for Postgres
pip install mysqlclient # for MySQL
如果你想用自己喜欢的数据库,你可以去参考Django相关的文档,来正确配置数据库
数据库表
用migrate命令来为新的应用创建数据库表
python manage.py migrate
管理员用户名
创建超级用户的命令:
python manage.py createsuperuser
用CMS check命令来检查配置情况
完成最低的配置要求后,你可以用CMS check命令来确认一下你的配置是否正确,顺便也可能安装一下必须的组件
python manage.py cms check
这个命令检查你的设置,应用和数据库配置情况,并且给你一份体检报告。
Note
如果你缺少关键部件,这个命令将直接报错,不会运行下去。
按照教程走下来,运行cms check命令,来确认一下你的配置没有问题
Sekizai
在CMS中,Django Sekizai是用来管理静态文件的。在INSTALLED_APP配置中加入'sekizai'这个应用,并且在TEMPLATES['OPTIONS']中这么加入
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'sekizai.context_processors.sekizai',
],
},
},
]
管道
在你的项目配置文件 MIDDLEWARE_CLASSES 中你需要加入django.middleware.locale.LocaleMiddleware 。在Django中,默认是没有加入的。还要把下面也加入到列表中
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
你也可以加入'cms.middleware.utils.ApphookReloadMiddleware'.虽然他不是必须的,但是它很有用,如果你要加入,记住一定要把它加入的列表的最开始。
环境变量处理器
把这个环境变量'cms.context_processors.cms_settings' 加入到TEMPLATES['OPTIONS']['context_processors'].中
因为缺少一些设置,现在你会发现cms check并不能确认我们工程中的问题。下面就是需要进一步配置的地方
URLs
在你的工程文件urls.py中加入 url(r'^', include('cms.urls')) . 记得把它加到列表中的前面,以保证应用的链接配置能首先被发现。
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('cms.urls')),
]
好了,目前为止我们可以在项目根目录中运行 python manage.py runserver. 浏览器访问 http://localhost:8000/, 或者进管理 http://localhost:8000/admin/. 当然你现在其实干不了什么有意义的事
模板
django CMS至少需要一个模板来展现他的页面,默认模板在项目的 CMS_TEMPLATES list 里。
CMS_TEMPLATES = [
('home.html', 'Home page template'),
]
在你工程的根目录,新建一个templates文件夹,在里面新建一个home.html文件,内容如下
{% load cms_tags sekizai_tags %}
{% render_block "css" %}
{% cms_toolbar %}
{% placeholder "content" %}
{% render_block "js" %}
我们来详细了解一下上面代码
{% load cms_tags sekizai_tags %}这是加载我们在这个模板中要用到的模板标签库
{% page_attribute "page_title" %}这是获取页面的page_title的属性值
{% render_block "css" %} and {% render_block "js" %} 这两个是 Sekizai 模板标签。他们加载了Django应用中定义好了的HTML区域块,而DjangoCMS则定义了这些区域块的css和js,所以我们需要这些标签。 我们建议把{% render_block "css" %} 放在 的前面, 把{% render_block "js" %} 放在