Django中的templates(你的HTML頁面放哪里)


本文回答Django里面的HTML文件應該怎么放,以及Django是如何查找模板文件的。

到目前為止我們沒有使用HTML頁面,在之前的說明中所有內容都是寫死在程序里的,如果你想改變內容就要修改代碼。但是顯然這不和邏輯,所以要將頁面和數據分離,程序產生數據,頁面么就是用來展示數據的,將來你想更換展示的樣式那么也不需要修改程序,我們這里說的程序是Python代碼。

1. 創建你的HTML文件

我們來弄一個HTML頁面來做主頁,替代之前的hello world頁面,畢竟有點丑,其實主頁中的HTML寫什么隨便,我就從網上找了一個Bootstrap模板來用。

https://v3.bootcss.com/examples/jumbotron/

1.1 存放你的html文件

有了主頁文件那該放哪里呢?

先放這里吧

 

1.2 修改的URL配置

在views中添加一個方法,用於處理對於這個頁面的請求。注意這里return的時候用來render,雖然HttpResponses可以返回HTML頁面,但是當我們需要對模板進行填充的時候它就不行了,render函數的功能是載入模板,填充數據,然后生成HttpResponse對象,然后返回這個對象。

修改URL配置

驗證一下,是不是好看多了

1.3 Django是怎么找到這個HTML頁面的

要回答這個問題我們還是需要看settings.py配置文件

BACKEND:就是Django用來渲染模板用的引擎,默認是Django自帶的,我們也可以緩存Jinjia的引擎,這個至少目前我們還沒用到。

DIRS:Django會按順序從這里的目錄里去找模板文件,記住是按照順序啊。也就是說如果有2個同名的文件那么只會顯示第一個找到的。

其實這個TEMPLATES列表默認是空的,我們看到的這些信息都是開發工具給我們生成的,其實也就是通過django-admin建立項目時候產生的。

2. 所有的HTML都要放在默認生成的那個默認的templates目錄里嗎

畢竟每個APP都有自己的模板文件,都放在這一個目錄里會不會比較亂?怎么才能便於管理呢?

2.1 方法一

其實這個很好解決,你可以按照APP名稱在默認的templates目錄里建立目錄,如下圖:

現在我們就給mystie這個APP建立一個主頁把。HTML代碼如下:

在mysite的views.py里面添加處理函數

修改mystie里面的url配置,增加一個導入,建立一個URL匹配模式

測試訪問

2.2 方法二

在每一個APP目錄里面建立一個templates目錄(其實這個目錄名沒有要求),然后我們把建立的主頁文件挪走,如下圖:

mysite的URL配置文件不變

這時候你發現mysite里面的views.py文件有報錯,找不到了。

我們把前面的目錄都刪除,發現錯誤提示沒有了

顯示正常

這是為什么呢?它怎么知道去mystie這個APP的templates目錄里找呢?其實這個還是跟settings.py文件有關

APP_DIRS:它的作用就是讓模板引擎去APP的目錄里面的templates目錄里找模板文件,記住只能是templates目錄。該選項默認是False,但是你看到的默認是True,這個也是因為通過django-admin建立項目是幫你設置的。

那如果我的APP里面的模板目錄不叫templates呢?比如下面,我把目錄名改了,views里又提示找不到了。怎么辦呢?

這時候就有用到settings.py文件了,增加一個目錄就好了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM