日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新手怎么读懂一个中型的Django项目

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新手怎么读懂一个中型的Django项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言】中型的項目是比較多的APP,肯會涉及多數據表的操作。如果有人帶那就最好了,自己要先了解基本的django框架(MTV ,ORM等)師傅可以給講解一下框架怎么組織url.py,model.py,admin.py,view.py,.html順序的,弄懂一個app。其他的也就觸類旁通了。由于使用的django框架公司沒人用過,將自己摸索學習的過程記錄一下。

一、工程項目介紹

1、一個erp管理系統,41個文件目錄,190個文件,還算是一個中型的項目。好在里面的APP有相似的,無需全部搞懂所有的,只需搞懂那么一個,觸類旁通。


2、運行界面

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

網上一張完整的圖:


大致幾個步驟:

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返回到瀏覽器,呈現給用戶   

三、正式分析

分析的前提,默認已經設置好所有的數據庫,可以運行工程,就差讀懂代碼。

wsgi到中間件就略過了,我們分析主要的程序!!

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

2、打開url.py

可以看到,有初始的admin對應的view,后面兩個是分APP所在的目錄對應的url.py,所以url.py不止一處。

3、打開workflow.view.start函數

view里面的函數都是對數據庫的操作,是對數據的承上啟下作用,我們看箭頭指的那個表Modal(models.py里面的類)

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

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

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

5、我們找到modal所在的models.py,這里面是對數據庫中字段的定義,“=”左邊是數據庫中的字段名,右邊“workflow code”是可以自己命名的,將顯示在前端??梢悦蓾h字。打開:


里面是對列的定義。類名就是表名,類里面的字段代表數據表中的字段(code),數據類型則由CharField(相當于varchar)、DateField(相當于datetime), max_length 參數限定長度。

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


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

7、還是回到view.py,找到start函數,在類的最后我們看到了類的調用:

調用了.html文件

8、html文件里面包含太多繼承,除了base.html可以看懂,其他的我基本看不懂。那咋辦呢?——我一般是打開對應的網頁,然后看網頁源碼,這樣將源碼和其對應的html文件對比,也能明白個差不多。

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

四、實戰一個例子

1、basedata中的model.py

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴, 互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' class ExpenseAccount(generic.BO):"""基金賬戶"""index_weight = 10status= 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']

2、admin.py

class ExpenseAdmin(generic.BOAdmin):list_display = ['status','qhzh','code','yhzh','name','modification','description']list_display_links = ['code','name']search_fields = ['name']

五、小結

django框架是比其他框架復雜一些,基于mvt架構理論理清其中url,models,view,admin,html幾者的關系就簡單了。在復雜一些的django項目,也就是增加了APP的數量。當然此時會涉及更多的框架之外的知識,比如數據庫表的一對多等等。需要多看,多學習吧!我又淺嘗輒止了……

總結

以上是生活随笔為你收集整理的新手怎么读懂一个中型的Django项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。