1. 程式人生 > >【連載】Django入門到實戰(一)

【連載】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.pyimport 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

作用:進行除錯,測試一些未知方法