Django框架模板語言實例小結【變量,標簽,過濾器,繼承,html轉義】
本文實例講述了Django框架模板語言。分享給大家供大家參考,具體如下:
模板語言
模板語言簡稱為DTL(Django Template Language)
模板變量
模板變量名由數(shù)字,字母,下劃線和點組成,不能以下劃線開頭。
使用:{{模板變量名}}
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()
函數(shù)傳遞給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:設置模板變量的默認值
格式:模板變量 | 過濾器:參數(shù)
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> <h1>導航條</h1> {% block b1 %} <h1>這是父模板b1塊中的內容</h1> {% endblock b1 %} <h1>版權信息</h1> </body> </html>
child.html內容
{% extends 'booktest/base.html' %} {% block b1 %} {{ block.super }} <h1>這是子模板b1的內容</h1> {% endblock b1 %}
在父模板中{% block b1 %} <h1>這是父模板b1塊中的內容</h1> {% endblock b1 %}
定義一個預留快,預留塊中可以有內容。子模板繼承時,{% extends 'booktest/base.html' %}
導入,{% block b1 %} {{ block.super }} <h1>這是子模板b1的內容</h1> {% endblock b1 %}
寫預留塊,{{ block.super }}
繼承預留快的內容。
html轉義
通過render()
函數(shù)傳遞過來的模板上下文默認是轉義的,也就是說我們想傳遞html語言的時候,實際上傳遞過來的是字符串,這個時候我們可以通過過濾器關閉轉義
{{context | safe}}
希望本文所述對大家基于Django框架的Python程序設計有所幫助。
相關文章
Python?基于Selenium實現(xiàn)動態(tài)網(wǎng)頁信息的爬取
本文主要介紹了通過Selenium和webdrive等庫,對動態(tài)網(wǎng)頁的信息進行爬取。文中的示例代碼非常詳細,感興趣的同學快來跟隨小編一起學習吧2021-12-12在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實例
今天小編就為大家分享一篇在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù)的方法
這篇文章主要介紹了在Python的Django框架中更新數(shù)據(jù)庫數(shù)據(jù),對此Django框架中提供了便利的插入和更新方法,需要的朋友可以參考下2015-07-07解決Django no such table: django_session的問題
這篇文章主要介紹了解決Django no such table: django_session的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04