目錄
第一部分:創建項目和app
創建新項目
打開pycharm專業版,新建一個Django項目,取名爲MySite,其餘保持默認配置即可。
創建投票app
輸入命令:startapp polls,並執行。
此時app創建成功!
創建第一個視圖view
配置路由URLconf
配置polls的路由
配置根路由
啓動服務器,查看效果
第二部分:數據庫 & DjangoAdmin
配置MySQL
在MySQL中創建一個新的數據庫:polls
在數據庫中生成對應的表
執行“migrate”,此時會根據settings.py中的INSTALLED_APPS自動建表。
創建模型Model
註冊app
生成migration
查看migration對應的SQL語句
將migration同步到數據庫中
去數據庫中查看新生成的表:
database API
增加記錄
打開Python Console,依次執行:
查看錶polls_question,發現增加了一條記錄:
時間顯示的不對,應該是時區的問題。
簡單的查詢
重寫__str__()方法
增加Choice並查看
Django Admin
創建超級管理員
將Model添加到管理員頁面
查看管理員頁面
解決時間顯示錯亂的方法——修改時區
第三部分:增加更多的視圖views
創建templates文件夾
創建templates文件夾,用來存放模板:
(注意文件夾的結構一定要如下圖所示,這樣符合Django的Namespace規則)
創建index視圖
查詢數據庫 & 拋出404錯誤
在瀏覽器中查看:
在模板中訪問對象的屬性
通過點語法來訪問對象的屬性,訪問的次序爲:字典查詢、屬性查詢、下標查詢。
去除URL硬編碼
路由定義如下:
URL命名空間
見上文中的app_name = xxx
第四部分:表單
創建一個簡易表單
RadioButton的基本語法說明:
每一個RadioButton的name爲choice,value爲對應choice的id,因此,當提交POST請求時,會發送給服務器choice=#的數據,#就是value對應的值。
forloop.counter:
for循環執行的次數,從1開始。
csrf_token:
防止跨站請求僞造。
創建vote和results視圖
第五部分:測試
略。
第六部分:靜態文件
創建static文件夾
創建static文件夾,然後創建style.css:
修改模板頁面
啓動服務器,查看效果
增加背景圖片
將背景圖片添加到該目錄下:
修改CSS樣式表文件:
此時,項目主頁便顯示出了該背景圖。
Tips:顯然{% static %}不能使用在靜態文件中,因此在靜態文件中應該使用相對路徑。
第七部分:自定義管理員界面
改變字段次序
修改admin.py:
增加關聯的對象
現在我們有了Question的管理員頁面,但是我們缺少Choice的顯示。
第一種方法
在admin.py中註冊Choice:
效果如下:
在這個表格中,Question域是一個下拉框,包含了數據庫中的每個question。Django把ForeignKey表示爲下拉框的形式。
第二種方法
修改admin.py:
這表示Choice對象在Question的頁面中被編輯。效果如下:
(其餘更細節的定製省略,詳情可以查閱官方文檔)
Over。