您好,登錄后才能下訂單哦!
這篇文章主要介紹了Django框架模板語言的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
具體如下:
模板語言
模板語言簡稱為DTL(Django Template Language)
模板變量
模板變量名由數字,字母,下劃線和點組成,不能以下劃線開頭。
使用:{{模板變量名}}
def index2(request): '''模板加載順序''' return render(request, 'booktest/index2.html') # /temp_var def temp_var(request): '''模板變量''' my_dict = {'title': '字典鍵值'} my_list = [1, 2, 3] book = BookInfo.objects.get(id=1) #定義模板上下文 context={'my_dict':my_dict,'my_list':my_list,'book':book} return render(request,'booktest/temp_var.html',context)
模板變量可以是字典,列表或者對象。定義好模板上下文之后,用render()
函數傳遞給html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模板變量</title> </head> <body> 使用字典屬性:{{ my_dict.title }} 使用列表元素:{{ my_list.1 }} 使用對象屬性:{{ book.btitle }} </body> </html>
可以看到模板變量都是通過 . 調用的。
模板標簽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模板標簽</title> <style> .red{ background-color: red; } .yellow{ background-color: yellow; } .green{ background-color: green; } </style> </head> <body> <ul> {% for book in books %} {% if book.id <= 2 %} <li class="red">{{ forloop.counter }}--{{ book.btitle }}</li> {% elif book.id >= 5 %} <li class="yellow">{{ forloop.counter }}--{{ book.btitle }}</li> {% else %} <li class="green">{{ forloop.counter }}--{{ book.btitle }}</li> {% endif %} {% endfor %} </ul> </body> </html>
具體的其他的模板標簽可以參考Django官方文檔。
過濾器
過濾器用于對模板變量進行操作
date:改變日期的顯示格式
length:求長度,字符串,列表,元祖,字典
default:設置模板變量的默認值
格式:模板變量 | 過濾器:參數
date過濾器
<li class="red">{{ book.btitle }}--{book.bpub_date | date:'Y年-m月-d日'}</li>
default過濾器 {{dd | default:'無'}}
模板注釋
單行注釋:{# 注釋 #}
多行注釋:{% comment %}
模板繼承
不同頁面可能有相同的模塊,這時候可以使用模板繼承減少代碼量
base.html內容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父模板</title> </head> <body> <h2>導航條</h2> {% block b1 %} <h2>這是父模板b1塊中的內容</h2> {% endblock b1 %} <h2>版權信息</h2> </body> </html>
child.html內容
{% extends 'booktest/base.html' %} {% block b1 %} {{ block.super }} <h2>這是子模板b1的內容</h2> {% endblock b1 %}
在父模板中{% block b1 %} <h2>這是父模板b1塊中的內容</h2> {% endblock b1 %}
定義一個預留快,預留塊中可以有內容。子模板繼承時,{% extends 'booktest/base.html' %}
導入,{% block b1 %} {{ block.super }} <h2>這是子模板b1的內容</h2> {% endblock b1 %}
寫預留塊,{{ block.super }}
繼承預留快的內容。
html轉義
通過render()
函數傳遞過來的模板上下文默認是轉義的,也就是說我們想傳遞html語言的時候,實際上傳遞過來的是字符串,這個時候我們可以通過過濾器關閉轉義
{{context | safe}}
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Django框架模板語言的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。