在前文章節《django模板系統》中,我們對 django 的模板系統有了初步的認識,在本章我們將重點講解 django 的模板語言。
djano 的模板系統將 python **與 html **解耦,動態地生成 html 頁面。django 專案可以配置乙個或多個模板引擎,但是通常使用 django 的模板系統時,應該首先考慮其內建的後端 dtl(django template language,django 模板語言。
在 django 中,模板是可以根據字典資料動態變化的,並且能夠根據檢視中傳遞的字典資料動態生成相應的 html 網頁。django 中使用 template 來表示模板,template 物件定義在 django/template/base.py 檔案中,它的建構函式如下所示:
def __init__(self,template_string,origin=none,name=none,engine=none)
它只有乙個必填的引數:字串表示的模板**。
1) 模板的配置
首先按照bookstore/templates
路徑建立模板資料夾 templates,在 settings.py 配置檔案中有乙個 templates 變數,如下所示:
templates = [
,
},
]
其中每一項釋義如下所示:
2) 修改settings配置檔案
修改 settings.py 檔案,設定 templates 的 dirs 值來指定模板的搜尋目錄為「templates」如下所示:
'dirs': [os.path.join(base_dir, 'templates')]
那麼我們如何載入模板並響應給瀏覽器呢?在前文《django模板系統》一文,我們已經介紹了一種 render 的方法,其實這裡可以使用的方式主要有兩種,在本節我們將更加全面的講解它們。
方式一:通過 loader 獲取模板,通過 httpresponse 進行響應
from django.template import loader
# 1.通過loader載入模板
t = loader.get_template("模板檔名")
# 2.將t轉換成html字串
html = t.render(字典資料)
# 3.用響應物件將轉換的字串內容返回給瀏覽器
return httpresponse(html)
方式二:使用 render 方法直接載入並響應模板
from django.shortcuts import render
return render(request,'模板檔名', 字典資料)
下面我們對上述兩種方式分別來說明:
#方式一
from django.template import loader # 匯入loader方法
from django.shortcuts import render #匯入render 方法
def test_html(request):
t=loader.get_template('test.html')
html=t.render()#以字典形式傳遞資料並生成html
return httpresponse(html) #以 httpresponse方式響應html
#方式二
from django.shortcuts import render #匯入reder方法
def test_html(request):
return render(request,'test.html',)#根據字典資料生成動態模板
然後在 templates 目錄下建立 test.html 檔案並在其中新增如下**:
},**是》p>
最後在 bookstore/urls.py 檔案的 urlpatterns 列表中為檢視函式 test_html() 配置路由對映關係,如下所示:
urlpatterns = [ path('admin/', admin.site.urls), path('test/',views.test_html), ]
從上述過程我們不難體會 django 檢視函式的實現流程。首先定義了檢視函式 test_html(),然後在 templates 資料夾中新建了 test.html 檔案,使用它作為模板檔案;最後我們配置了檢視函式的路由對映關係,以上步驟完成後,我們可以通過訪問 127.0.0.1/test 得到如下展示頁面:
renbder 方法的作用是結合乙個給定的模板和乙個給定的字典,並返回乙個渲染後的 httpresponse 物件。通俗的講就是把字典格式的內容, 載入進 templates 目錄中定義的 html 檔案, 最終通過瀏覽器渲染呈現.
rebder() 方法的完整引數格式如下所示:
render(request, template_name, context=none, content_type=none, status=none, using=none)
以下每個引數的含義如下所示:
常見的 content_type **格式,如下所示:
multipart/form-data :需要在表單中進行檔案上傳時,就需要使用該格式
本節是我們使用 templates 模板的的開始,下一節我們將詳細介紹 django 模板語言的語法,對它展開進一步的學習。
模板多個列表級聯 可變引數模板
碼字不易,歡迎給個贊!普通模板只可以採取固定數量的模板引數。然而,有時候我們希望模板可以接收任意數量的模板引數,這個時候可以採用可變引數模板。對於可變引數模板,其將包含至少乙個模板引數包,模板引數包是可以接收0個或者多個引數的模板引數。相應地,存在函式引數包,意味著這個函式引數可以接收任意數量的引數...
Django 模板載入靜態檔案
2 確保在 settings.py中設定了static url。staticfiles dirs os.path.join base dir,static 5 在模版中使用 load 標籤載入 static 標籤。比如要載入在專案的 static 資料夾下的 style.css 的檔案。那麼示例 如...
django 模板的載入和匯入
為了減少模板載入呼叫過程及模板本身的冗餘 django 提供了一種使用方便且功能強大的 api 用於從磁碟中載入模板,要使用此模板載入api,首先你必須將模板的儲存位置告訴框架。該項工作在 設定檔案 中完成。django 設定檔案是存放 django 例項 也就是 django 專案 配置的地方。它...