Django框架模板語言實例小結(jié)【變量,標簽,過濾器,繼承,html轉(zhuǎn)義】
本文實例講述了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>
可以看到模板變量都是通過 . 調(diào)用的。
模板標簽
<!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:改變?nèi)掌诘娘@示格式
length:求長度,字符串,列表,元祖,字典
default:設(shè)置模板變量的默認值
格式:模板變量 | 過濾器:參數(shù)
date過濾器
<li class="red">{{ book.btitle }}--{book.bpub_date | date:'Y年-m月-d日'}</li>
default過濾器 {{dd | default:'無'}}
模板注釋
單行注釋:{# 注釋 #}
多行注釋:{% comment %}
模板繼承
不同頁面可能有相同的模塊,這時候可以使用模板繼承減少代碼量
base.html內(nèi)容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>父模板</title> </head> <body> <h1>導(dǎo)航條</h1> {% block b1 %} <h1>這是父模板b1塊中的內(nèi)容</h1> {% endblock b1 %} <h1>版權(quán)信息</h1> </body> </html>
child.html內(nèi)容
{% extends 'booktest/base.html' %} {% block b1 %} {{ block.super }} <h1>這是子模板b1的內(nèi)容</h1> {% endblock b1 %}
在父模板中{% block b1 %} <h1>這是父模板b1塊中的內(nèi)容</h1> {% endblock b1 %}
定義一個預(yù)留快,預(yù)留塊中可以有內(nèi)容。子模板繼承時,{% extends 'booktest/base.html' %}
導(dǎo)入,{% block b1 %} {{ block.super }} <h1>這是子模板b1的內(nèi)容</h1> {% endblock b1 %}
寫預(yù)留塊,{{ block.super }}
繼承預(yù)留快的內(nèi)容。
html轉(zhuǎn)義
通過render()
函數(shù)傳遞過來的模板上下文默認是轉(zhuǎn)義的,也就是說我們想傳遞html語言的時候,實際上傳遞過來的是字符串,這個時候我們可以通過過濾器關(guān)閉轉(zhuǎn)義
{{context | safe}}
希望本文所述對大家基于Django框架的Python程序設(shè)計有所幫助。
相關(guān)文章
Python?基于Selenium實現(xiàn)動態(tài)網(wǎng)頁信息的爬取
本文主要介紹了通過Selenium和webdrive等庫,對動態(tài)網(wǎng)頁的信息進行爬取。文中的示例代碼非常詳細,感興趣的同學(xué)快來跟隨小編一起學(xué)習(xí)吧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結(jié)合Python網(wǎng)絡(luò)爬蟲做一個今日新聞小程序
本篇文章介紹了我在開發(fā)過程中遇到的一個問題,以及解決該問題的過程及思路,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下2021-09-09解決Django no such table: django_session的問題
這篇文章主要介紹了解決Django no such table: django_session的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04