Django框架模板語(yǔ)言實(shí)例小結(jié)【變量,標(biāo)簽,過(guò)濾器,繼承,html轉(zhuǎn)義】
本文實(shí)例講述了Django框架模板語(yǔ)言。分享給大家供大家參考,具體如下:
模板語(yǔ)言
模板語(yǔ)言簡(jiǎn)稱為DTL(Django Template Language)
模板變量
模板變量名由數(shù)字,字母,下劃線和點(diǎn)組成,不能以下劃線開(kāi)頭。
使用:{{模板變量名}}
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)
模板變量可以是字典,列表或者對(duì)象。定義好模板上下文之后,用render()函數(shù)傳遞給html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板變量</title>
</head>
<body>
使用字典屬性:{{ my_dict.title }}
使用列表元素:{{ my_list.1 }}
使用對(duì)象屬性:{{ book.btitle }}
</body>
</html>
可以看到模板變量都是通過(guò) . 調(diào)用的。
模板標(biāo)簽
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板標(biāo)簽</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>
具體的其他的模板標(biāo)簽可以參考Django官方文檔。
過(guò)濾器
過(guò)濾器用于對(duì)模板變量進(jìn)行操作
date:改變?nèi)掌诘娘@示格式
length:求長(zhǎng)度,字符串,列表,元祖,字典
default:設(shè)置模板變量的默認(rèn)值
格式:模板變量 | 過(guò)濾器:參數(shù)
date過(guò)濾器
<li class="red">{{ book.btitle }}--{book.bpub_date | date:'Y年-m月-d日'}</li>
default過(guò)濾器 {{dd | default:'無(wú)'}}
模板注釋
單行注釋:{# 注釋 #}
多行注釋:{% comment %}
模板繼承
不同頁(yè)面可能有相同的模塊,這時(shí)候可以使用模板繼承減少代碼量
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 %}
定義一個(gè)預(yù)留快,預(yù)留塊中可以有內(nèi)容。子模板繼承時(shí),{% 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)義
通過(guò)render()函數(shù)傳遞過(guò)來(lái)的模板上下文默認(rèn)是轉(zhuǎn)義的,也就是說(shuō)我們想傳遞html語(yǔ)言的時(shí)候,實(shí)際上傳遞過(guò)來(lái)的是字符串,這個(gè)時(shí)候我們可以通過(guò)過(guò)濾器關(guān)閉轉(zhuǎn)義
{{context | safe}}
希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用Python的time庫(kù)格式化時(shí)間的方法
通過(guò)使用Python的time庫(kù),我們可以方便地進(jìn)行時(shí)間處理、格式化、解析和計(jì)算等操作,本文介紹了time庫(kù)的一些常見(jiàn)功能和使用方法,包括格式化時(shí)間、解析時(shí)間戳、獲取當(dāng)前時(shí)間、計(jì)算時(shí)間差等,感興趣的朋友一起看看吧2023-11-11
Python?基于Selenium實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)信息的爬取
本文主要介紹了通過(guò)Selenium和webdrive等庫(kù),對(duì)動(dòng)態(tài)網(wǎng)頁(yè)的信息進(jìn)行爬取。文中的示例代碼非常詳細(xì),感興趣的同學(xué)快來(lái)跟隨小編一起學(xué)習(xí)吧2021-12-12
mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解
今天小編就為大家分享一篇mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例
今天小編就為大家分享一篇在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
在Python的Django框架中更新數(shù)據(jù)庫(kù)數(shù)據(jù)的方法
這篇文章主要介紹了在Python的Django框架中更新數(shù)據(jù)庫(kù)數(shù)據(jù),對(duì)此Django框架中提供了便利的插入和更新方法,需要的朋友可以參考下2015-07-07
結(jié)合Python網(wǎng)絡(luò)爬蟲做一個(gè)今日新聞小程序
本篇文章介紹了我在開(kāi)發(fā)過(guò)程中遇到的一個(gè)問(wèn)題,以及解決該問(wèn)題的過(guò)程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-09-09
解決Django no such table: django_session的問(wèn)題
這篇文章主要介紹了解決Django no such table: django_session的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

