Django筆記 django結構分析

2022-08-15 06:09:11 字數 2580 閱讀 5452

看了一段時間django官方文件,先把自己理解的django目錄結構記錄一下

乙個成熟的django專案的結構大致如下:

/project/

|-- project/

|-- settings.py # 專案配置

|-- urls.py # 專案路由定義

|-- wsgi.py # nginx/apache

|-- templates/

|-- base.html # 模板

...|-- admin.py # 配置模型models在django原生後台的管理

|-- forms.py # 表單處理邏輯

|-- managers.py # 模型處理邏輯

|-- models.py # 模型定義

|-- urls.py # 路由設定

|-- views.py # 控制層

|-- tests.py

...

... # 另乙個應用

|-- static/

|-- admin/

django 自帶admin 後台,通過 admin.py 很容易對簡單的模型進行增刪改查管理操作。

在業務邏輯不是很複雜的情況下,簡單配置一下就可以實現對資料的管理。

urlpatterns = [

url(r'^$', views.indexview.as_view(), name='home'),

url(r'^more/$', views.delete, name='more'),

]

個人認為學習理解 models 是掌握 django 的關鍵。跟以往php專案經驗單獨建立資料庫不同,django 把資料庫結構也包含到專案中。

models的定義主要包括資料表結構的各個字段(field),表與表之間的關係(foreignkey),對錶的查詢操作(manager)

field 和 manger 都支援自定義

django 會根據models中的定義自動建立資料表:

# 定義模型

vim models.py

# 生成變更

python manage.py makemigrations

# 執行變更

python manage.py migrate

managers.py 屬於 models 的一部分,我覺得這一塊可以從models中拿出來單獨定義。

它主要提供2個功能:

class pollmanager(models.manager):

def with_counts(self):

from django.db import connection

with connection.cursor() as cursor:

cursor.execute("""

select p.id, p.question, p.poll_date, count(*)

from polls_opinionpoll p, polls_response r

where p.id = r.poll_id

group by p.id, p.question, p.poll_date

order by p.poll_date desc""")

result_list =

for row in cursor.fetchall():

p = self.model(id=row[0], question=row[1], poll_date=row[2])

p.num_responses = row[3]

return result_list

相當於mvc中的 controller 控制層。定義為各種函式,從傳入的 request 中獲取請求引數,生成 response

django 提供了很多封裝函式如render,get_object_or_404來方便處理。

此外,還可以使用基本檢視類處理請求,view,templateview,redirectview

forms 屬於 views 的一部分,同樣我覺得可以單獨拿出來處理

它主要負責 views 從 request 中獲取引數並預處理這部分邏輯

模板選擇在 views 中通過render制定, 或 繼承的 templateview 中定義template_name

template 檔案支援繼承,子模板通過重寫 <% block %> 塊來渲染不同頁面:

# base.html

public block

# child.html

private block

Django學習筆記 三 APP以及的檔案結構

我們在前面利用django架構做了乙個最簡單的專案,但是在專案一開始我也說了這只是乙個大致的示意,檔案結構什麼的都不是很規範的,那麼今天我們就來看看略微規範的檔案結構時什麼樣的。還是以前面的那個案例,我們一步步來講.進入專案目錄,執行如下命令 各個檔案的作用及配置 配置 這裡主要要注意的,就是vie...

Django學習筆記 1 初會Django

1.django book 2.google baidu django官網文件 二 django簡介 1.歷史 2.特點 3.mvc設計模式 關於django的mvc開發模式最大特點是鬆散結合 四 django的安裝 1.具體安裝步驟 2.注意 1 django需要2.3或更高版本的python 2...

Django學習筆記

django web程式設計思路 global setting run server check environment start project django admin.py startproject mysite 生成專案檔案 manage.py 檔案基本就是 django admin.py...