新手怎麼讀懂一箇中型的Django項目

前言】中型的項目是比較多的APP,肯會涉及多數據表的操做。若是有人帶那就最好了,本身要先了解基本的django框架(MTV ,ORM等)師傅能夠給講解一下框架怎麼組織url.py,model.py,admin.py,view.py,.html順序的,弄懂一個app。其餘的也就舉一反三了。因爲使用的django框架公司沒人用過,將本身摸索學習的過程記錄一下。css

1、工程項目介紹

一、一個erp管理系統,41個文件目錄,190個文件,還算是一箇中型的項目。好在裏面的APP有類似的,無需所有搞懂全部的,只需搞懂那麼一個,舉一反三。html

新手怎麼讀懂一箇中型的Django項目​  

二、運行界面前端

新手怎麼讀懂一箇中型的Django項目​  

2、先看一個完整的從請求到響應

網上一張完整的圖:java

新手怎麼讀懂一箇中型的Django項目

大體幾個步驟:python

1. 用戶經過瀏覽器請求一個頁面 
2. 請求到達Request Middlewares,中間件對request作一些預處理或者直接response請求 
3. URLConf經過urls.py文件和請求的URL找到相應的View 
4. View Middlewares被訪問,它一樣能夠對request作一些處理或者直接返回response 
5. 調用View中的函數 
6. View中的方法能夠選擇性的經過Models訪問底層的數據 
7. 全部的Model-to-DB的交互都是經過manager完成的 
8. 若是須要,Views可使用一個特殊的Context 
9. Context被傳給Template用來生成頁面 
    a.Template使用Filters和Tags去渲染輸出 
    b.輸出被返回到View 
    c.HTTPResponse被髮送到Response Middlewares 
    d.任何Response Middlewares均可以豐富response或者返回一個徹底不一樣的response 
    e.Response返回到瀏覽器,呈現給用戶    
  參考:https://blog.csdn.net/a289237642/article/details/81213067

3、正式分析

分析的前提,默認已經設置好全部的數據庫,能夠運行工程,就差讀懂代碼。web

wsgi到中間件就略過了,咱們分析主要的程序!!數據庫

一、先找到seting.py所在的目錄django

新手怎麼讀懂一箇中型的Django項目

二、打開url.py瀏覽器

新手怎麼讀懂一箇中型的Django項目

能夠看到,有初始的admin對應的view,後面兩個是分APP所在的目錄對應的url.py,因此url.py不止一處。架構

三、打開workflow.view.start函數

view裏面的函數都是對數據庫的操做,是對數據的承上啓下做用,咱們看箭頭指的那個表Modal(models.py裏面的類)

新手怎麼讀懂一箇中型的Django項目

四、在view.py的同級目錄下,找到admin.py

這裏他進行了Mddal類的綁定:

新手怎麼讀懂一箇中型的Django項目

找到後面那個綠色區域的類,那裏就是web後臺。django自帶的後臺管理。所謂後臺,就是對model.py裏面定義的數據庫字段,進行前臺顯示。

新手怎麼讀懂一箇中型的Django項目

五、咱們找到modal所在的models.py,這裏面是對數據庫中字段的定義,「=」左邊是數據庫中的字段名,右邊「workflow code」是能夠本身命名的,將顯示在前端。能夠命名成漢字。打開:

新手怎麼讀懂一箇中型的Django項目

裏面是對列的定義。類名就是表名,類裏面的字段表明數據表中的字段(code),數據類型則由CharField(至關於varchar)、DateField(至關於datetime), max_length 參數限定長度。具體裏面models的函數,參考:https://www.cnblogs.com/dreamkeeper/p/7623894.html

其對應的數據庫裏面的字段:

新手怎麼讀懂一箇中型的Django項目

六、如此,咱們的代碼和數據庫交互了起來,咱們能夠在view()中對數據庫進行增刪改查,view()中還要負責將數據映射到html文件中,html再動態連接css渲染,輸出到界面。注意,咱們的分析過程並非一條直線,在view()處分紅了兩路。view()往下的咱們分析過了,下面分析view()往上到達html的。

七、仍是回到view.py,找到start函數,在類的最後咱們看到了類的調用:

新手怎麼讀懂一箇中型的Django項目

調用了.html文件

八、html文件裏面包含太多繼承,除了base.html能夠看懂,其餘的我基本看不懂。那咋辦呢?——我通常是打開對應的網頁,而後看網頁源碼,這樣將源碼和其對應的html文件對比,也能明白個差很少。

html語言弄懂標籤就簡單了。

4、實戰一個例子

一、basedata中的model.py

class ExpenseAccount(generic.BO):
    """
    基金帳戶
    """
    index_weight = 10
    status= models.CharField(_("基金ID"),max_length=const.DB_CHAR_NAME_120)
    qhzh = models.CharField(_("期貨帳戶"),max_length=const.DB_CHAR_NAME_120)
    code = models.CharField(_("期貨入金"),max_length=const.DB_CHAR_NAME_20,blank=True,null=True)
    yhzh = models.CharField(_("銀行帳戶"),max_length=const.DB_CHAR_NAME_120)
    name = models.CharField(_("銀行入金"),max_length=const.DB_CHAR_NAME_120)

    description = models.TextField(_("備註"),blank=True,null=True)
    parent = models.ForeignKey('self',verbose_name=_("parent"),null=True,blank=True)

    class Meta:
        verbose_name = _('expenses account')
        verbose_name_plural = _('基金帳戶')
        #對記錄的排序,兩個是二級排序
        ordering = ['-modification','status']

二、admin.py

class ExpenseAdmin(generic.BOAdmin):

    list_display = ['status','qhzh','code','yhzh','name','modification','description']
    list_display_links = ['code','name']
    search_fields = ['name']

5、小結

django框架是比其餘框架複雜一些,基於mvt架構理論理清其中url,models,view,admin,html幾者的關係就簡單了。在複雜一些的django項目,也就是增長了APP的數量。固然此時會涉及更多的框架以外的知識,好比數據庫表的一對多等等。須要多看,多學習吧!我又淺嘗輒止了……

原文連接:
https://www.cnblogs.com/huangfuyuan/p/Django.html


 

新手怎麼讀懂一箇中型的Django項目

識別圖中二維碼,領取python全套視頻資料

相關文章
相關標籤/搜索