Django——模板(Template)的使用(模板變量、模板標籤、過濾器、註釋)

Django 中的模板

模板的功能

​ 模板用於產生 html,控制頁面上展示的內容,模板文件不僅僅是一個 html 文件,它包含兩部分內容

  1. 靜態內容:像 css、js、html
  2. 動態內容:用於動態生成一些網頁內容,通過模板語言來生成

模板文件的使用

​ 通常是視圖函數中使用模板產生 html 內容返回給客戶端

  1. 加載模板文件,獲取模板文件的內容,產生一個模板對象
  2. 定義模板上下文,給模板傳遞數據
  3. 模板渲染產生 html 頁面內容,用傳遞的數據替換相應的變量,產生一個替換後的標準 html 內容
def index(request):
    temp = loader.get_template('login/index.html')
    context = {}
    res_html = temp.render(context)
    return HttpResponse(res_html)

模板文件的加載順序

  1. 首先去配置的模板目錄下面去找模板文件
  2. 去 INSTALLED_APPS 下面的每個應用下找模板文件,前提是應用中必須有 templates 文件夾

在這裏插入圖片描述

模板語言

​ 模板語言簡稱爲 DTL(Django Template Language)

模板變量

​ 模板變量是由數字、字母、下劃線、點組成的,不能以雙下劃線開頭

使用模板變量

​ 模板變量通過{{ 模板變量名 }}這種方式使用

模板變量的解析順序

​ 以{{ user.uname }}爲例

  1. 首先把 user 當成一個字典,把 uname 當成鍵名,即對user['uname']進行取值
  2. 把 user 當成一個對象,把 uname 當成屬性,即對user.uname進行取值
  3. 把 user 當成一個對象,把 uname 當成對象的方法,即對user.uname()進行取值

​ 再以{{ user.0 }}爲例

  1. 首先把 user 當成一個字典,把 0 當成鍵名,即對user['0']進行取值
  2. 把 user 當成一個列表,把 0 當成下標,即對user[0]進行取值

​ 如果解析失敗,則產生內容時用空字符串填充模板變量

​ 使用模板變量時,.前面的可能是一個字典,可能是一個對象,還可能是一個列表

def temp_var(request):
    my_dict = {'title' : 'dict_title'}
    my_list = ['1', '2', '3']
    user = UserLogin.objects.get(id=1)
    return render(request, 'login/temp.html', {'dict' : my_dict, 'list' : my_list, 'user' : user})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板變量</title>
</head>
<body>
使用字典屬性:{{ dict.title }}<br>
使用列表元素:{{ list.1 }}<br>
使用對象屬性:{{ user.uname }}
</body>
</html>

模板標籤

​ 通過{% 代碼段 %}的方式使用模板標籤

for

{% for x in list %}
# 列表不爲空時執行
{% empty %}
# 列表爲空時執行
{% endfor %}

​ 可以通過{{ forloop.counter }}得到 for 循環當前遍歷的次數

if

{% if 條件 %}
{% elif 條件 %}
{% else %}
{% endif %}
# 關係比較操作符:> < >= <= == !=
# 邏輯運算符:not and or

​ 注意,進行比較操作的時候,比較操作符的兩邊必須要有空格

​ 模板標籤還有很多,可以在官網上查找

過濾器

​ 模板過濾器的作用就是對模板變量進行操作的

  • date:改變日期的顯示格式
  • length:求長度,字符串、列表、元組、字典長度均可
  • default:設置模板變量的默認值

​ 格式:模板變量|過濾器:參數,例如:

{{ user.re_time|date:'Y年-m月-d日' }}

​ 同樣,過濾器也還有很多,可以去官網上查詢

模板註釋

單行註釋

{# 註釋內容 #}

多行註釋

{% comment %}
	註釋內容
{% endcomment %}

​ 值得一提的是,html 中註釋的內容,在瀏覽器的查看源代碼功能中是可以看到的,而這種使用模板註釋,是看不到的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章