close
※已完成架構與部份功能,還有許多細節沒有處理
一、開發環境
- 本專案使用 Ubuntu Linux 進行開發
- Python 版本為 3.6.5
二、Django設置
- 創建一個 virtualenv 名為 mysiteenv
- startproject 一個名為 mysite 的 project
- 並 startapp 叫作 blog 的 app
- mkdir templates目錄與static目錄
- 配置 setting 檔案:
- 加入 blog 至 App
- 添加templates路徑、STATICFILES_DIRS路徑
- 修改時區、語系
三、模板設置
- 創建基礎模板
- 在templates目錄下添加<base.html>
- 初步區分幾個 block 為 title、content、script
- 導入bootstrap
- 從 bootstrap官網下載3.3.7版本
- 在header處加入裝置與css資訊
- 在末端處添加 jquery 與 bootstrap 檔案
- 測試頁面
- 創建<home.html>頁面繼承基礎模板
- 在<urls.py>添加<home.html>路徑
- 在<views.py>添加 home 初步方法
- 在終端機虛擬環境輸入命令 python manage.py runserver 測試頁面
- 添加導覽列
- 佈局導覽頁面
四、模型設置
- 開啟blog應用的<models.py>
- 導入用戶模組
- pip3 安裝 django-ckeditor、pillow
- 在<settings.py>的 APP 導入 'ckeditor_uploader' 、 'ckeditor'
- 在<models.py>引入富文本套件、<settings.py>、<urls.py>設置圖片上傳與路徑
- 建立 model,部落格分類與部落格內容
- 添加 model 內容
- 將模型註冊至 admin
五、模板頁面
- 創建 <blog_list.html> 模板頁面
- 在 <views.py> 添加 blog_list 方法,將資料傳入前端
- 在 <urls.py> 添加 blog_list 路徑
- 使用分類區塊化文章
- 在 blog 應用添加模板標籤 templatetags 並進行配置
- 在 blog_list 模板取得分類
- 使用[:5]來取得前五項
- 使用模板標籤進行第二層的文章標題迴圈
- 添加 bootstrap panel 排版
- 創建<blog_type.html>分類頁面繼承 <blog_list.html>
- 創建新的{% block blog %} 來編寫文章列表
- 迴圈顯示文章、並添加超連結
- 將富文本編輯轉譯、格式化去除css、擷取為100字符
- 添加 bootstrap jumbotron 排版
- 在 <urls.py> 添加 blog_type 路徑,並將 type_pk 傳入後端處理
- 在 <views.py> 添加 blog_type 方法,將篩選後的資料傳入前端
- 創建新的{% block blog %} 來編寫文章列表
- 創建<blog_detail.html>文章詳細頁面繼承 <base.html>
- 在 <urls.py> 添加 blog_detail 路徑,並將 blog_pk 傳入後端處理
- 在 <views.py> 添加 blog_detail 方法,將篩選後的資料傳入前端
- 整合方法
- 建立 common_blog 方法
- 將各方法同樣的內容移至 common_blog 中
- 在blog_list 與 blog_type 方法中的context 傳入 common_blog 方法
- 在common_blog方法中創建context字典並且存入共用函數
- 添加右側文章分類與計數
- 導入計數器 from django.db.models import Count
- 在 commen_blog 方法的分類中使用annotate添加計數
- 在前端頁面增加右側分類欄位與計數
六、用戶系統
- 登錄功能
- 創建用戶應用、註冊app
- 應用目錄創建<forms.py>
- 撰寫登錄表單
- 設置url路徑
- 初步撰寫登入方法、登入模板
- 基礎模板導覽列添加登入判斷
- <forms.py>表單進行登錄驗證
- 完善後端方法
- 使用reverse將登錄後轉回前一頁面(需將<login.html>的action路徑移除)
- 登出功能
- 在用戶應用<views.py>添加登出方法
- 設置url路徑
- 在導覽列添加登出選項
- 註冊功能
- 在用戶表單初步撰寫註冊表單
- 初步撰寫註冊方法
- 設置url路徑
- 註冊表單驗證
- 密碼驗證,須將"clean_變數"與cleandata最後的變數對應
- 完善註冊方法
- 儲存密碼時使用密文儲存
- 撰寫註冊模板
七、評論系統
- 創建 comment 應用
- 在 <settings.py> 註冊 APP
- 創建應用模型
- 使用通用模型 ContentType
- 透過外鍵指向模型
- 紀錄對應模型的主鍵值
- 集合前兩項成一個通用外鍵
- 添加模型欄位
- 添加排序
- 在 <admin.py> 註冊
- 設置 <urls.py> 路徑
- 初步撰寫提交評論方法
- 在 comment 應用 <views.py>撰寫 update_comment 方法
- 使用referer返回前頁,若<base.html>設定為never需修改
- 取得用戶訊息
- 取得評論資料
- 取得模型與文章編號
- 創建評論物件、存入評論資料
- 評論後轉址回前頁面,若找不到頁面則跳轉至主頁
- 初步建立前端評論區域
- 開啟 blog 應用的 <blog_detail.html> 頁面
- 驗證使用者是否登入,登入則顯示評論區域,未登入則顯示登入選項
- 評論表單化
- 在comment應用 創建<forms.py>表單
- <forms.py>表單驗證使用者、評論對象內容
- 需要驗證用戶,所以需自訂user用法,再由update_comment傳入user參數來使用
- 在 blog 應用的 blog_detail 方法 添加 comment_form獲取評論的方法
- 修改 update_comment方法 ,將其改為接收form表單資料後,傳送資料至前端頁面
- <blog_detail.html>前端頁面改為使用表單提交評論
- 富文本提交評論
- 安裝 django-ckeditor
- 在 <forms.py>添加 django-ckeditor、在評論內容表單添加富文本
- 在<settings.py> 配置 django-ckeditor
- 在 <blog_detail.html> 添加 ckeditor 的 js
- 在 <base.css> 添加 django-ckeditor 的寬度
全站熱搜
留言列表