【連載】Django入門到實戰(一)
一、專案目錄結構介紹
manager.py
與專案進行互動的命令列工具集的入口(專案管理器)
MyDjango
目錄:專案容器,包含專案的基本配置,目錄名稱不建議修改
__init__.py
Python中宣告模組的檔案,內容預設為空
settings.py
專案的總配置檔案,包含資料庫、Web應用、時間等各種配置
urls.py
URL配置檔案,Django專案中所有地址(頁面)都需要我們自己去配置其URL
wsgi.py
WSGI(Python Web Server Gateway Interface)Python伺服器閘道器介面,Python應用與Web伺服器之間的介面
mytest
目錄:開發者建立的應用
命令列:python manage.py startapp mytest
(使用命令列建立應用時需要手動將應用名新增到settings.py中的INSTALLED_APPS
裡,應用名不能與Python中模組名相同)
Django伺服器啟動命令:python manage.py runserver [埠號]
二、應用目錄結構介紹
migrations
資料移植(遷移)模組
__init__.py
Python中宣告模組的檔案,內容預設為空
admin.py
應用的後臺管理系統的配置
apps.py
應用的一些配置,Django-1.9以後自動生成
models.py
資料模型,使用ORM框架,類似於MVC結構中的Models(模型)
tests.py
自動化測試模組,Django提供了自動化測試功能,在這裡編寫測試指令碼(語句)
views.py
執行響應程式碼和邏輯處理的主要模組,包含專案中的大部分程式碼
三、響應頁面示例
編輯views.py
每個響應對應一個函式,函式必須返回一個響應,函式必須存在一個引數,一般約定為request,每一個響應(函式)對應一個URL
編輯urls.py
每個URL都以url的形式寫出來,url函式放在urlpatterns列表中,url函式三個引數:URL(正則)、對應的方法、名稱
四、URL配置
在根urls.py
中引入include;在APP目錄下建立urls.py
檔案,格式與urls.py
urls.py
中url函式第二個引數改為include('blog.urls')
注意事項:根urls.py
針對APP配置的URL名稱,是該APP所有URL的總路徑; 配置URL時注意正則表示式結尾符$和/
五、Templates介紹
定義:使用了Django模板語言(Django Template Language, DTL
)的HTML檔案,也可以使用第三方模板(如Jinja2
)
5.1 使用步驟
- 在APP的根目錄下建立名叫
Templates
的目錄 - 在該目錄下建立HTML檔案
- 在
views.py
中返回render()
5.2 DTL初步使用
render()
函式中支援一個dict型別引數,該字典是後臺傳遞到模板的引數,鍵為引數名,在模板中使用{{ 引數名 }}來直接使用
5.3 Django查詢Templates
Django按照INSTALLED_APPS中的新增順序查詢Templates,不同APP下Templates目錄中的同名.html檔案會造成衝突
解決Templates衝突方案:在APP的Templates
目錄下建立以APP名為名稱的目錄,將html檔案放入新建立的目錄下
六、Models介紹
Django中的Models通常是一個Model對應資料庫的一張資料表,Django中的Models以類的形式表現,它包含了一些基本欄位以及資料的一些行為
ORM(Object-Relational Mapping
, 物件關係對映):實現了物件和資料庫之間的對映,隱藏了資料訪問的細節,不需要編寫SQL語句
6.1 編寫Models步驟
- 在APP根目錄下建立
models.py
,並引入models模組 - 建立類,繼承
models.Model
,該類即是一張資料表 - 在類中建立欄位,欄位即類裡面的屬性(變數)
attr = models.CharField(max_length = 64)
更多關於類的欄位以及可選引數
6.2 生成資料表:
命令列中進入manage.p
同級目錄執行python manage.py makemigrations app_name(可選)
,再執行python manage.py migrate
6.3 檢視生成的資料表
Django會自動在app/migrations/
目錄下生成移植檔案,執行python manage.py sqlmigrate
應用名 檔案id 檢視SQL語句
預設sqlite3
的資料庫在專案根目錄 下db.sqlite3
6.4 前端頁面呈現資料
views.py
中import models
article = models.Article.objects.get(pk=1)
render(request, page, {'article' : article})
模板可直接使用物件以及物件的"."操作,如{{ article.title }}
七、Admin介紹
Admin是Django自帶的一個功能強大的自動化資料管理介面,被授權的使用者可直接在Admin中管理資料庫,Django提供了許多針對Admin的定製功能
7.1 配置Admin
建立超級使用者:python manage.py createsuperuser
更改語言為中文:修改settings.py中LANGUAGE_CODE = 'zh_Hans'
7.2配置應用
在應用下admin.py
中引入自身的models模組(或裡面的模型類)
編輯admin.py: admin.site.register(models.Article)
7.3 修改資料預設顯示名稱
在Article
類下新增一個方法
根據Python版本選擇__str__(self)
或__unicode__(self)
, return self.title
八、Templates過濾器
寫在模板中,屬於Django模板語言,可以修改模板中的變數從而顯示不同的內容
使用方法:{{ value | filter }}, 如{{ list_nums | length }}
過濾器可疊加:{{ value | filter1 | filter2 | … }}
九、Django Shell
Python的互動式命令列程式,它自動引入了我們的專案環境
使用方法:python manage.py shell
作用:進行除錯,測試一些未知方法