客製化 Mezzanine - A Content Management Platform (or CMS) Built Using the Django Framework

Mezzanine, an open source content management platform
Mezzanine 是一套建構在 Django 上的 CMS。安裝系統的過程很簡單, 輕鬆地輸入幾個指令, 就可以快速擁有一個美觀界面可以使用的內容管理系統了。不過呢, 如果想要更進一步地客制化它, 從了解設計哲學到完成一些小目標, 也算是一個可以學到很多東西的主題。

兩個禮拜說長不長, 說短不短, 在這段時間中不停地在原始碼、文件、Stackoverflow、及討論區中來回查找、驗證, 在茫茫的資訊海中要找到本來資料就不多 Mezzanine, 學習門檻不可謂不高,  因此在對它有一些的了解後(Django藏了太多東西, 要全部了解還是要繼續摸), 儘管深怕班門弄斧會誤導觀眾, 但是避免這些對我來說很寶貴的經驗被太快遺忘掉, 希望透過這篇網誌來整理一下先前的思緒與成果, 倘若還可以意外地釣到一些野生的前輩或先進分享經驗指教, 那可更是感動萬分啊。

先大概介紹一下這次 (已經完成的) 客製化目標或遇到的問題:
  1. 讓一個 Mezzanine 有兩(多)個 Blog 系統
  2. 利用 Django 的 Middleware 機制進行多國語系 (I18N) 處理 (使用 JavaScript 的解決方案)
  3. 對  RichText Page 新增客製化欄位
  4. Django/Mezzanine 處理靜態檔案 (STATIC_URL, STATIC_ROOT, MEDIA_URL, MEDIA_ROOT)
  5. 利用 context_processor 新增 template 裡面所需使用的變數
  6. 使用 Gunicorn 透過 WSGI 使用 Unix Socket 與 Nginx 溝通
  7. 啟用 SSL (HTTPS)
  8. 增加 Admin 管理界面開啓關閉選項
  9. Logging, 最重要的程式日誌設定
  10. CentOS 上利用 pip 安裝 Mezzanine 會發生的問題
  11. 客製化 TinyMCE (RichText Editor) 新增按鈕及功能
  12. 解決 AngularJS 與 template 使用相同 {{ }} 符號
問題與說明放在上述目標連結上, 如果還沒放連結, 表示還沒寫完。至於利用  Puppet、Supervisor 及 fabric 進行部署與管理的系統層面則不在本次文章範圍內。

留言