一 前言
在上一節了解到視圖函數處理后,會將結果渲染到創建的html頁面,但html如何接收并顯示視圖函數返回的動態數據呢?最常用的做法就是使用模板(Template),本節將簡單介紹一下模板的作用和用法。 可以這樣簡單的理解模板的概念,模板是包含了html的靜態部分和模板語法,通過模板語法實現動態數據的插入,最后拼接成完整的靜態html頁面。
二 模板應用舉例
A. 定義一個模板如下:
#?index.html
<!DOCTYPE?html>
<html?lang="en">
<head>????<meta?charset="UTF-8"><title>模板使用說明</title>
</head>
<body>???<h1>{{?var_content?}}</h1>
</body>
</html>
B. 在視圖函數中向模板傳遞數據:
#?views.py
from?django.shortcuts?import?renderdef?index(request):return?render(request,'index.html',{"?var_content?":"Hello?World!"})
通過上面實例可以看出,事先創建的html不需要硬編碼,通過{{ var_content }}定義的變量,就可以接收視圖函數以字典形式傳遞的參數值(Hello World!)。因而,通過這種方式解決了前面提到的html顯示動態數據的問題。 除了{{}}定義變量,模板語言還有其他語法形式。
三 基本模板語法
模板語法主要包括四種結構,如下:
A. 變量
語法形式:{{ variable }} 說明:定義變量,視圖函數中以字典形式傳遞變量值,實現動態數據向html的傳遞;
B. 標簽
語法形式:{% tag %} 說明:通過標簽可以實現靈活的結構控制、輸出內容、加載外部信息到模板;部分常用標簽如下:
{%?csrf_token?%}?#?csrf標簽、用于跨站請求偽造保護
{%?for?...?in?...?%}?#?for標簽,用于循環…{%?endfor?%}
{%?if?...%}??#?if標簽,用于邏輯判斷{%?elif?...%}{%?else?%}{%?endif?%}
C. 過濾器
語法形式:{ { 變量|過濾器 }} 說明:過濾器主要用于修改變量或標簽參數的值,如:
{{?my_date|date:"Y-m-d"?}}?#?按指定的格式"Y-m-d",顯示日期
D. 注釋
語法形式:
{%?comment?%}?#?comment標簽?,用于注釋...{%?endcomment?%}
{#?…?#}?#?單行注釋
模板語法絕不僅限于此,在此只是說明,通過模板語法可以實現動態html的生成,最終將后臺處理結果恰到好處的顯示在前端頁面。
四 其他資源
關于python學習、分享、交流,筆者開通了微信公眾號【小蟒社區】,感興趣的朋友可以關注下,歡迎加入,建立屬于我們自己的小圈子,一起學python。
轉載于:https://blog.51cto.com/2681882/2400129