看了一段時間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...