今日任務:
1 blog的數據庫模型定義
2 簡單的注冊登錄功能的實現
項目的源文件已經推送到git@oschina.net.
所以,如果想要參閱源碼的請移步 (Fork) http://git.oschina.net/gitlab/Missuor/
Tag: v1.0.0.02 http://git.oschina.net/gitlab/Missuor/tree/v1.0.0.02
首先把昨天的歷史遺留問題解決掉.
Hello World
SHA-1: http://git.oschina.net/gitlab/Missuor/commit/64f14dba765ae93d1adf77559416bc438919bcf8
在core文件夾下面新建文件views.py
(新多出來的static文件夾和templates文件夾會在后面說明)
圖 1 沒啥好說的
圖 2 hello_world函數定義
擴展閱讀: Writing views
https://docs.djangoproject.com/en/1.7/topics/http/views/#writing-views
圖 3 Hello World的url配置
擴展閱讀:
URL dispatcher
https://docs.djangoproject.com/en/1.7/topics/http/urls/#url-dispatcher
python manage.py runserver 然后訪問 http://127.0.0.1:8000/hello-world/
圖 4 Hello World頁面
擴展閱讀:
https://docs.djangoproject.com/en/1.7/intro/tutorial03/#write-your-first-view
定義Blog數據庫模型
源碼閱讀: http://git.oschina.net/gitlab/Missuor/blob/f32277c3b25c565d9c97c7e582b38b4537c51cc0/blog/models.py
關於Django數據庫模型的定義,這里提供幾個參考文檔的鏈接地址 Model field reference [1] 和 Model Meta options [2]
圖 5 blog的數據庫模型
擴展閱讀:
Model field reference
https://docs.djangoproject.com/en/1.7/ref/models/fields/
Model Meta options
https://docs.djangoproject.com/en/1.7/ref/models/options/#model-meta-options
這里補充說明一點昨天漏掉的東西,python manage.py startapp blog過后,激活該app的話必須在settings.py 的INSTALLED_APPS中添加該app的名字,這樣blog才能使用.
圖 6 settings.py 的INSTALLED_APPS項中激活blog
在項目根路徑下載命令行窗口中鍵入 python manage.py validate 用來檢測數據庫定義是否通過驗證.如圖 6-2 所示則為正常
圖 6 – 2 檢測模型的定義是否正確
定義Blog的views中的幾個基本的函數--注冊 登錄 注銷
圖 7 blog的views.py函數預定義
圖 8 blog的urls.py定義
將blog的URL_conf應用到項目
源碼閱讀: http://git.oschina.net/gitlab/Missuor/commit/5fafa9be7ea750ee9301900a9d7d1c12020500a8
圖 9 在核心urls.py中引入blog是url配置文件
文件路徑: http://git.oschina.net/gitlab/Missuor/tree/master/templates/core
圖 10 從django自己的admin模板文件中拷貝幾個基礎模板文件作為自定義模板
圖 11 Django默認的模板路徑
源碼閱讀: http://git.oschina.net/gitlab/Missuor/blob/master/templates/core/base.html
圖12 定義站點的基本模板文件base.html
擴展閱讀:
HTML
http://www.w3school.com.cn/html/index.asp
CSS
http://www.w3school.com.cn/css/index.asp
JavaScript
http://www.w3school.com.cn/js/index.asp
圖 13 模板文件繼承與重載
擴展閱讀:
The Django template language
https://docs.djangoproject.com/en/1.7/topics/templates/#the-django-template-language
圖 14 給自己的blog添加幾個模板文件
圖 15 沒啥好說的 裝一個需要用到的庫pillow
圖 16 利用pip安裝pillow庫
圖 17 User的models定義中,有一個ImageField字段是用來盛放用戶頭像信息的,這就是為什么需要安裝pillow庫的原因
注冊登錄注銷后台代碼實現
源碼閱讀: http://git.oschina.net/gitlab/Missuor/blob/ae4419578c328c1c413a0ffb1698b782046a99f3/blog/views.py
圖 18-0 blog.views.header
注冊
圖 18 blog.views.register 注冊的后台代碼
擴展閱讀:
View decorators
https://docs.djangoproject.com/en/1.7/topics/http/decorators/#module-django.views.decorators.http
PEP 3129 - Class Decorators
https://www.python.org/dev/peps/pep-3129/
PEP 318 - Decorators for Functions and Methods
https://www.python.org/dev/peps/pep-0318/
登錄
圖 19 blog.views.login 登錄的后台代碼
注銷
圖 20 blog.views.logout 注銷的后台代碼
子頁面首頁
圖21 blog.views.index 博客的頁面首頁后台代碼
定義用於驗證用戶的表單
源碼閱讀: http://git.oschina.net/gitlab/Missuor/blob/3b7c79a11b5384ef674cece3863af375c4e16fb9/blog/forms.py
圖 22 blog.forms 博客用戶驗證的form表單的后台代碼
擴展閱讀:
Working with forms
https://docs.djangoproject.com/en/1.7/topics/forms/#working-with-forms
成果展示 1 HomePage
成果展示 2 Login
成果展示 -3 Register
我會抽空把代碼往這里堆一堆的,方便小伙伴們直接查閱批注^7^.
edit. @MrWho
2015-01-22 1:02