django CMS 入門教程

這份手冊假設你的機器已經達到本文檔的要求。 javascript

1.1 獲取幫助 css

當你遇到問題而且不能獨自解決的時候,你能夠從郵件列表中得到幫助或者在irc.freenode.net網絡的IRC頻道#django-cms得到幫助。 html

1.2 配置和安裝 java

1.2.1 準備環境 node

收集須要的配置是一個好的開始,可是咱們如今用一個實際的Django CMS項目而且配置它。 python

1.2.1.1 啓動你的Django項目 sql

下面假設你的項目在~/workspace/myproject/。 數據庫

用下面的代碼啓動你的Django項目: django

1 cd~/workspace
2 django-admin.py startproject myproject
3 cdmyproject
4 python manage.py runserver
在你的瀏覽器中打開127.0.0.1:8000,你能夠看到一個來自Django的「It Worked」的消息。

1.2.1.2 在你的Django項目中安裝和配置Django CMS 瀏覽器

打開文件:~/workspace/myproject/settings.py。爲了讓生活更容易,把下面幾行增長到文件的頂部:

1 # -*- coding: utf-8 -*-
2 importos
3 gettext = lambda s: s
4 PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
把下面的應用程序增長到你的INSTALLED_APPS,它包含了Django CMS自己,同時也包含了它的依賴和其它建議的應用程序/庫:

    'cms',Django CMS自己;

    'mptt',實現修正預排序遍歷樹的實用工具;

    'menus',模型獨立層次的網站導航助手;

    'south',智能架構和數據遷移;

    'sekizai',管理javascript和css。

同時,根據你的須要增長下面的插件:

  • 'cms.plugins.file'
  • 'cms.plugins.flash'
  • 'cms.plugins.googlemap'
  • 'cms.plugins.link'
  • 'cms.plugins.picture'
  • 'cms.plugins.snippet'
  • 'cms.plugins.teaser'
  • 'cms.plugins.text'
  • 'cms.plugins.video'
  • 'cms.plugins.twitter'
(警告:增長'cms.plugins.snippet'插件有潛在的安全隱患,更多信息請參考Snippet文檔。)

這個在插件參考中有詳細的描述。在Django CMS的擴展頁面有許多可用的插件。除此以外,肯定你取消'django.contrib.admin'的註釋。

你可能但願用django-filter和它帶有django CMS插件的部分而不是cms.plugins.file,cms.plugins.picture, cms.plugins.teaser和cms.plugins.video核心插件。在這種狀況下,你不須要把他們增長到 INSTALLED_APPS,而是增長下面的:

  • 'filer'
  • 'cmsplugin_filer_file'
  • 'cmsplugin_filer_folder'
  • 'cmsplugin_filer_image'
  • 'cmsplugin_filer_teaser'
  • 'cmsplugin_filer_video'

若是你選擇核心插件,你應該關注CMS_PAGE_MEDIA_PATH設置點指向的目錄(默認狀況下MEDIA_ROOT和 cms_page_media/相關),在Django運行時用戶對它能夠寫入的。若是你選擇django-filter,它的配置有一個類似的要求。

若是你想版本化你的內容,你也須要安裝django-reversion並把它增長到INSTALLED_APPS:

'reversion'

你須要在合適的地方把django CMS中間層增長到你的MIDDLEWARE_CLASSES:

01 MIDDLEWARE_CLASSES=(
02     'django.middleware.common.CommonMiddleware',
03     'django.contrib.sessions.middleware.SessionMiddleware',
04     'django.middleware.csrf.CsrfViewMiddleware',
05     'django.contrib.auth.middleware.AuthenticationMiddleware',
06     'django.contrib.messages.middleware.MessageMiddleware',
07     'cms.middleware.multilingual.MultilingualURLMiddleware',
08     'cms.middleware.page.CurrentPageMiddleware',
09     'cms.middleware.user.CurrentUserMiddleware',
10     'cms.middleware.toolbar.ToolbarMiddleware',
11 )
在TEMPLATE_CONTEXT_PROCESSORS中你至少要增長下面的東西:
1 TEMPLATE_CONTEXT_PROCESSORS=(
2     'django.contrib.auth.context_processors.auth',
3     'django.core.context_processors.i18n',
4     'django.core.context_processors.request',
5     'django.core.context_processors.media',
6     'django.core.context_processors.static',
7     'cms.context_processors.media',
8     'sekizai.context_processors.sekizai',
9 )
(注意:這個文件在Django設置文件自動生成時會丟失,所以你須要增長它。)


把STATIC_ROOT指向靜態文件存在的地方(也就是說,你的圖像,CSS文件,Javascript文件,等等):


1 STATIC_ROOT=os.path.join(PROJECT_PATH,"static")
2 STATIC_URL="/static/"
對於上傳的文件,你須要設置MEDIA_ROOT設置:



1 MEDIA_ROOT=os.path.join(PROJECT_PATH,"media")
2 MEDIA_URL="/media/"
(注意:請確保static和media子文件夾存在而且是可寫的。)


如今在文件的TEMPLATE_DIRS部分增長一點東西:


1 TEMPLATE_DIRS=(
2     # The docs say it should be absolute path: PROJECT_PATH is precisely one.
3     # Life is wonderful!
4     os.path.join(PROJECT_PATH,"templates"),
5 )
在CMS_TEMPLATES中至少增長一個模板,好比說:



1 CMS_TEMPLATES=(
2     ('template_1.html','Template One'),
3     ('template_2.html','Template Two'),
4 )
咱們在以後的步驟中會建立一個實際的模板,所以如今不用擔憂它。只要把它黏貼到你的設置文件。


(注意:你定義的CMS_TEMPLATES模板在運行時必須存在,而且至少有一個在django CMS有用的{% placeholder <name> %} 模板標籤。)

django CMS容許你用Django內建的翻譯編輯全部的語言。因爲這些是可數的,咱們目前限制爲英語:


1 LANGUAGES=[
2     ('en','English'),
3 ]

最後,設置文件的DATABASES部分,讓它反應你的數據庫佈置。若是你只想在本地嘗試一下,sqlite3是最容易創建的數據庫,可是在實際項目中不該該使用。若是你如今但願用sqlite3,下面是你的DATABASES設置應該看起來的樣子:

1 DATABASES={
2     'default': {
3         'ENGINE':'django.db.backends.sqlite3',
4         'NAME': os.path.join(PROJECT_PATH,'database.sqlite'),
5     }
6 }
1.2.2 URL配置

你須要在你的urlpatterns的結束的地方包含'cms.urls'的urlpatterns。咱們建議用下面的urls.py:

01 fromdjango.conf.urls.defaultsimport*
02 fromdjango.contribimportadmin
03 fromdjango.confimportsettings
04  
05 admin.autodiscover()
06  
07 urlpatterns=patterns('',
08     (r'^admin/', include(admin.site.urls)),
09     url(r'^', include('cms.urls')),
10 )
11  
12 ifsettings.DEBUG:
13     urlpatterns=patterns('',
14     url(r'^media/(?P<path>.*)$','django.views.static.serve',
15         {'document_root': settings.MEDIA_ROOT,'show_indexes':True}),
16     url(r'', include('django.contrib.staticfiles.urls')),
17 )+urlpatterns
1.3 建立模板

django CMS用模板來定義頁面的外觀和哪一部分是可編輯的。可編輯的地方被稱爲placeholders。這些模板是標準的Django模板,你能夠像官方文檔中描述的那樣使用它們。

你但願在你的頁面使用的模板必定要在CMS_TEMPLATES設置中聲明:

1 CMS_TEMPLATES=(
2     ('template_1.html','Template One'),
3     ('template_2.html','Template Two'),
4 )
若是你從開頭遵循這個教程,這個代碼已經在你的設置文件中。

如今,來個實際帶有實際模板的文件。

打開你最喜歡的編輯器而後在你項目目錄templates下建立一個叫base.html的文件。

下面是最簡單的一個基本模板叫作base.html的例子:

01 {%load cms_tags sekizai_tags%}
02 <html>
03   <head>
04       {%render_block"css"%}
05   </head>
06   <body>
07       {%cms_toolbar%}
08       {%placeholder base_content%}
09       {%block base_content%}{%endblock%}
10       {%render_block"js"%}
11   </body>
12 </html>
如今,在一樣目錄下建立一個叫template_1.html的文件。它調用基本模板,並往裏面增長額外的內容:
1 {%extends"base.html"%}
2 {%load cms_tags%}
3  
4 {%block base_content%}
5   {%placeholder template_1_content%}
6 {%endblock%}
當你在頁面上把template_1.html設置爲一個模板時,你須要插入兩個佔位符。一個是在template_1.html頁面的template_1_content,另外一個是在增長的base.html的base_content。

當實際中有許多佔位符時,確保給佔位符一個能夠識別的名字,這樣你就能夠在管理頁面更容易使他們。

如今,探索並增長一個template_2.html文件!若是你以爲沒有創造性,只要template_1,而後重命名第二個佔位符就像「template_2_content」。

1.3.1 用sekizai處理靜態文件

django CMS用django-sekizai處理CMS插件須要的媒體文件(css和javas文件)。這要求在你的模板中至少定義兩個sekezai命名空 間:js和css。你能夠在sekizai_tags模板標籤中用render_block模板標籤來這樣作。咱們強烈建議 在</head>HTML標籤結束以前放置{% render_block "css" %}標籤,在</body>HTML標籤結束以前放置{% render_block "js" %}標籤。

1.3.2 初始化數據庫

這個命令取決於你是升級你的安裝仍是從新安裝。咱們建議你熟悉South是如何工做的,由於它是一個頗有用,容易而且方便的工具。django CMS普遍的只用到它。

1.3.2.1 從新安裝

運行:

1 python manage.py syncdb--all
2 python manage.py migrate--fake
第一個命令會提示你建立一個超級用戶,選擇‘yes’而後輸入合適的值。

1.3.2.2 升級

運行:

1 python manage.py syncdb
2 python manage.py migrate

1.3.3 啓動並運行!

就是它了。用python manage.py runserver重啓你的開發服務器,在瀏覽器中輸入127.0.0.1:8000,你應該能獲得一個django CMS「It Worked」的頁面。

進入管理面板<http://127.0.0.1:8000/admin/>,擁你在創建數據庫的時候建立的用戶登陸。

關於在實際網絡服務器中佈置你的django CMS項目,請參照Django文檔。

1.4 建立你的第一個CMS頁面!

就是他了。如今是最好的一部分:你能夠用CMS開始了!用python manage.py runserver運行你的服務器,而後把瀏覽器指向127.0.0.1:8000/admin/,用你在syncdb以前定義的超級用戶登陸。

當你在你頁面的管理部分時,你應該看到像下面同樣的東西:

1.4.1 增長一個頁面

增長一個頁面就像在管理視圖中點擊「Pages」同樣簡單,而後點擊屏幕右上角「add page」按鈕。

這裏你選擇你用哪一個模板(記住,咱們建立了2個),至關明顯的東西也是同樣的,就像頁面使用什麼語言的(用於國際化),頁面的標題,它偷懶用的url。

點擊「Save」按鈕,不要驚訝,就會保存頁面,如今顯示一列頁面。

恭喜你!你如今已經徹底安裝了一個django CMS!

1.4.2 發佈一個頁面

下面是一系列能夠爲你的每一個頁面更改的參數。

1.4.2.1 可視化

默認狀況下,頁面時「不可視的」,爲了讓你們可以看到他們,你應該把它標記爲「發佈的」。

1.4.2.2 菜單

另外一個選項就是讓你調整一個頁面是否該出如今你的站點的導航上(也就是說,是否應該有一個能夠連接到這個頁面的菜單)。

1.4.3 向一個頁面增長內容

到目前爲止,咱們的頁面並無作太多的事。肯定它被標記爲「發佈的」,而後點擊頁面的「edit」按鈕。

忽視到目前位置的大多數接口,點擊屏幕右上角的「view on site」按鈕。就像期待的同樣,眼下你的頁面是空的,由於咱們的模板是真正是最小的一個。

讓咱們進入它吧!

點擊你瀏覽器的後退按鈕來看看頁面的管理接口。若是到目前爲止你是遵循教程的話,你的模板(template_1.html)定義了兩個佔位符。管理接口把這些佔位符當成子菜單:

向下滾動「可用插件」的下拉列表。他顯示你增長到INSTALLED_APPS設置的插件。選擇在下拉列表中總選擇「text」插件,而後點擊增長。

插件合適的地方顯示一個豐富的文本編輯器。

在編輯器中,輸入一些文本而後點擊「Save」按鈕。

用右上角的「View on site」按鈕回到你的頁面,就是它了!

1.4.4 從這該去哪

恭喜你,你如今有一個徹底功能的CMS!請熟悉插件列表中提供的不一樣插件而後創建一個好的網站!

相關文章
相關標籤/搜索