前言
Django CMS是目前最活躍的django內容系統
下面是從djangpackages網站截取的應用狀態
Django有一個自動安裝方法django CMS installer,但是一直碰到問題,所以最終還是采用了手動的方式。
本文會一步一步按照手動方式,完成Django-CMS的安裝。
安裝django CMS包
首先檢查django-CMS的匹配版本 http://docs.django-cms.org/en/release-3.4.x/index.html#requirements
django CMS |
Django |
Python |
||||||||||
1.4 & 1.5 |
1.6 & 1.7 |
1.8 |
1.9 |
1.10 |
1.11 |
2.6 |
2.7 |
3.3 |
3.4 |
3.5 |
3.6 |
|
3.0.18 |
✓ |
✓ |
⨯ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
⨯ |
⨯ |
3.1.7 |
⨯ |
✓ |
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
⨯ |
⨯ |
3.2.0 |
⨯ |
✓ |
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
⨯ |
⨯ |
3.2.1-3.2.5 |
⨯ |
✓ |
✓ |
✓ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
✓ |
⨯ |
3.3.0-3.4.1 |
⨯ |
⨯ |
✓ |
✓ |
⨯ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
⨯ |
3.4.2-3.4.4 |
⨯ |
⨯ |
✓ |
✓ |
✓ |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
⨯ |
3.4.5 |
⨯ |
⨯ |
✓ |
✓ |
✓ |
✓ |
⨯ |
✓ |
✓ |
✓ |
✓ |
✓ |
本文最終安裝信息
asn1crypto==0.24.0
certifi==2018.1.18
cffi==1.11.5
chardet==3.0.4
cryptography==2.1.4
dj-database-url==0.5.0
Django==1.9.13
django-classy-tags==0.8.0
django-cms==3.5.0
django-filer==1.3.0
django-formtools==2.1
django-mptt==0.8.7
django-polymorphic==1.3
django-sekizai==0.10.0
django-treebeard==4.2.0
djangocms-admin-style==1.2.7
djangocms-attributes-field==0.3.0
djangocms-column==1.7.0
djangocms-file==2.0.2
djangocms-googlemap==1.1.1
djangocms-installer==1.0.0
djangocms-link==2.1.2
djangocms-picture==2.0.6
djangocms-snippet==2.0.0
djangocms-style==2.0.2
djangocms-text-ckeditor==3.5.3
djangocms-video==2.0.4
easy-thumbnails==2.4.2
enum34==1.1.6
html5lib==0.9999999
idna==2.6
ipaddress==1.0.19
ndg-httpsclient==0.4.4
Pillow==5.0.0
pyasn1==0.4.2
pycparser==2.18
pyOpenSSL==17.5.0
pytz==2018.3
requests==2.18.4
six==1.11.0
tzlocal==1.5.1
Unidecode==0.4.21
我剛開始安裝的是django 1.11版本,但是中間插件django-column安裝時因為支持版本原因,自動退回到了django 1.9, 但基本不影響使用。
要注意的地方是 MIDDLEWARE這個設置,django 10里改成了MIDDLEWARE_CLASS, 如果退回去了,也要做相應的修改。
Django-CMS還有其他的依賴庫,這些都在它的setup.py文件里列出來了。
上面是我pip freeze出來的安裝庫,有些只是依賴庫
執行下面命令安裝django CMS
pip install django-cms
它會安裝最新的穩定版本
同時會安裝對應的基本依賴庫
Django==1.11.10
django-classy-tags==0.8.0
django-formtools==2.1
django-sekizai==0.10.0
django-treebeard==4.2.0
djangocms-admin-style==1.2.7
pytz==2018.3
創建新項目
django-admin.py startproject csblog
csblog是本文的演示項目名
最小需求應用和設置
打開setting.py,分別針對下面幾部分進行設置
INSTALLED_APPS
將下面應用添加到INSTALLED_APPS
'cms',
'menus',
'treebeard',
- Django CMS需要用到django的django.contrib.sites框架,你需要在setting文件設置SITE_ID ,SITE_ID = 1 就行了。
- cms 和menus 是django CMS的核心模塊
- django-treebeard用於管理django CMS頁面和插件的樹結構
django CMS默認安裝 django CMS admin style。它的很多styling特性能夠讓admin模塊更好的工作。這是一個可選模塊,但是強烈推薦你去使用它。
如果選擇admin style,將下面應用添加到INSTALLED_APPS,放在django.contrib.admin之前
語言設置
Django CMS需要設置 LANGUAGES ,列出所有你想支持的語言,並且必須把它放在LANGUAGE_CODE.
LANGUAGES = [
('en', 'English'),
('zh-hans', 'Chinese'),
]
為了簡單起見,現在就可以將默認的en-us改到en
數據庫
Django CMS要求關系數據庫后端,每個安裝的django CMS都必須有自己的數據庫。
你可以使用SQLite,它包含在python里,並不需要單獨安裝或特別配置。它不大可能會用於產品,但是開發的理想選擇,而且它還是django的默認DATABASES配置。
真正部署時,推薦使用 PostgreSQL 或 MySQL,不在本文介紹。
不管使用哪種技術,它都需要安裝對應的python適配模塊
pip install psycopg2 # for Postgres
pip install mysqlclient # for MySQL
mysql實際安裝時往往都會報錯,具體安裝方法參考我的mysql安裝文章。
數據表
運行migrate為新項目創建數據表
python manage.py migrate
Admin用戶
創建一個admin超級用戶
python manage.py createsuperuser
使用cms check進行配置
一旦你完成以上描述的最小需求的安裝,接下來你可以用django-CMS自帶的cms check 命令去幫助你識別和安裝其他的模塊。
python manage.py cms check
它會檢查你的配置、應用和數據庫,然后報告問題。
注意:如果關鍵模塊缺失,django CMS就不能執行該命令,只是簡單拋出錯誤。
接下來,首先完成以下步驟,然后用cms check 去驗證它的檢查列表里的各項是否已完成。
Sekizai
Django Sekizai用於django CMS的靜態文件管理,你需要在INSTALLED_APPS添加
'sekizai'
並且,在TEMPLATES['OPTIONS']['context_processors']:添加
TEMPLATES = [
{
...
'OPTIONS': {
'context_processors': [
...
'sekizai.context_processors.sekizai',
],
},
},
]
中間件Middleware
在 MIDDLEWARE_CLASSES 添加 django.middleware.locale.LocaleMiddleware ,默認不是安裝的。
同時,添加
'cms.middleware.user.CurrentUserMiddleware',
'cms.middleware.page.CurrentPageMiddleware',
'cms.middleware.toolbar.ToolbarMiddleware',
'cms.middleware.language.LanguageCookieMiddleware',
你也可以安裝'cms.middleware.utils.ApphookReloadMiddleware'。它不是必須的,但是很有用,如果要添加的話,放在列表最前面。
上下文處理器 context processors
將 'cms.context_processors.cms_settings' 添加到TEMPLATES['OPTIONS']['context_processors'],
雖然還需要進一步安裝一些配置,但是這個時候cms check已經能夠幫助你進行相應的檢查工作了。
進一步配置
URLS
在項目的urls.py,添加cms.url到urlpatterns列表。他需要放在其他的pattern之后,這樣其他應用的URL能夠首先被檢測到。
同時,你需要導入django.conf.urls.include,例如
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('cms.urls')),
]
至此,django項目已經可以運行了。可以執行python manage.py runserver啟動項目。通過 http://localhost:8000/訪問項目,或者http://localhost:8000/admin/訪問admin。
模板 Templates
Django CMS需要至少一個模板用於頁面顯示,CMS_TEMPLATES的第一個模板將被用於項目的默認模板
CMS_TEMPLATES = [
('home.html', 'Home page template'),
]
在項目根目錄,創建templates目錄及home.html,編寫一個最小的django CMS模板。
{% load cms_tags sekizai_tags %}
<html>
<head>
<title>{% page_attribute "page_title" %}</title>
{% render_block "css" %}
</head>
<body>
{% cms_toolbar %}
{% placeholder "content" %}
{% render_block "js" %}
</body>
</html>
這兒有必要將這個模板介紹一下:
- {% load cms_tags sekizai_tags %}加載模板庫。
- {% page_attribute "page_title" %} 提取頁面的 page_title 屬性。
- {% render_block "css" %}和{% render_block "js" %} 是Sekizai的template tags,用於加載block。Django CMS為css和js定義了block,需要包含他們兩個。建議把{% render_block "css" %}放在</head>前面,{% render_block "js" %}放在</body>前面。
- {% cms_toolbar %} 渲染cms工具欄
- {% placeholder "content" %} 定義了一個placehoder用於安置plugin插件。一個模板只是需要一個placeholder。這個例子的名字只是為了一個簡化的顯示。
Django需要知道從哪兒去找到它的模板,所以需要將templates添加到setting的模板目錄TEMPLATES['DIRS']
TEMPLATES = [
{
...
'DIRS': ['templates'],
...
},
]
Media媒體和static靜態文件處理
Djang CMS站點需要處理
- static file 靜態文件,這些是一個項目的核心部分,包括css,js和image
- media fiels 媒體文件,是用戶或者應用的上傳文件
這兩個配置文件都需要配置一下,跟普通項目一樣,所以這兒不做過多描述。
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
如果對項目進行部署,需要配置合適的media文件處理。在urls.py添加下面內容(僅用於產品部署目的)
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
添加內容處理功能
到目前為止,已經完成了django CMS站點的基本設置,可以正常的管理和服務網頁。但是,到目前為止還沒有安裝任何的插件,這就意味着你什么內容也不能添加,因為django的所有內容都是通過插件操作的。所以,現在我們需要安裝一些額外的應用插件來提供相應的功能。
Django filer
Django Filer 提供文件和圖片處理功能,許多其他的應用都是依賴它的。
安裝:
pip install django-filer
一些其他的app會作為依賴被安裝。
Easy Thumbnails用於創建不同大小的新版本圖片;
Django MPTT用於管理filer文件夾的樹形結構。
Pillow這個python圖形庫也會被安裝,它需要一些系統級的庫,Pillow documentation描述了在各種操作系統下怎樣安裝運行。
django-filer==1.3.0
django-mptt==0.8.7
django-polymorphic==1.3
easy-thumbnails==2.4.2
Pillow==5.0.0
Unidecode==0.4.21
在INSTALLED_APPS添加
'filer',
'easy_thumbnails',
'mptt',
同時,你也要添加
THUMBNAIL_HIGH_RESOLUTION = True
THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'easy_thumbnails.processors.autocrop',
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
'easy_thumbnails.processors.filters'
)
需要給Filer和Easy Thumbnail創建新的數據表,運行migrate
python manage.py migrate filer
python manage.py migrate easy_thumbnails
Django CMS CKEditor
Django CMS CKEditor 是django CMS默認的編輯器
安裝:
pip install djangocms-text-ckeditor
djangocms-text-ckeditor==3.5.3
html5lib==0.9999999
six==1.11.0
將djangocms_text_ckeditor 添加到INSTALLED_APPS
各種插件
Django CMS有很多功能強大的插件,他們對django CMS處理內容管理非常有幫助。
- djangocms-link
- djangocms-file
- djangocms-picture
- djangocms-video
- djangocms-googlemap
- djangocms-snippet
- djangocms-style
- djangocms-column
安裝:
pip install djangocms-link djangocms-file djangocms-picture djangocms-video djangocms-googlemap djangocms-snippet djangocms-style djangocms-column
命令分拆:
pip install djangocms-link
pip install djangocms-file
pip install djangocms-picture
pip install djangocms-video
pip install djangocms-googlemap
pip install djangocms-snippet
pip install djangocms-style
pip install djangocms-column
pip結果
djangocms-link==2.1.2
djangocms-attributes-field==0.3.0
djangocms-link==2.1.2
djangocms-file==2.0.2
djangocms-picture==2.0.6
djangocms-video==2.0.4
djangocms-snippet==2.0.0
djangocms-column==1.7.0
djangocms-style==2.0.2
djangocms-googlemap==1.1.1
djangocms-column版本需求是>=1.8&<1.10,所以它會卸載默認的django 1.11.10,安裝djagno 1.9
將以上應用添加到 INSTALLED_APPS:
'djangocms_link',
'djangocms_file',
'djangocms_picture',
'djangocms_video',
'djangocms_googlemap',
'djangocms_snippet',
'djangocms_style',
'djangocms_column',
運行migrate
啟動項目
python manage.py runserver
下一篇開始會介紹如何使用django CMS
關注下方公眾號獲取更多文章
參考文檔
http://docs.django-cms.org/en/release-3.4.x/how_to/install.html
