模板語法之變量、模版之過濾器、模版之標(biāo)簽、自定義標(biāo)簽和過濾器
十多年的博白網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整博白建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“博白網(wǎng)站設(shè)計”,“博白網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
# 相當(dāng)于print了該變量
urls.py
url(r'^index/', views.index),
views.py
from django.shortcuts import render # Create your views here. def index(request): name='s_jun' age=20 li=[1,2,'s_jun','zone'] l2=[] t1=(1,2,3,'a','b','3') s2={'h','t','d','q','b','v',9,6,4,3,} dic={'name':'s_jun','age':20,'str2':[9,'a',6,'x',3]} def test(): print('test') return 'return test ' print(test()) # 類和對像 class Person(): def __init__(self,name,age): self.name=name self.age=age def get_name(self): return self.name @classmethod def cls_test(cls): return 'cls' @staticmethod def static_test(): return 'static' # 模板里不支持帶參數(shù) # def get_name_cs(self,ttt): # return self.name s_jun=Person('s_jun',20) zone=Person('zone',20) person_list=[s_jun,zone] person_dic={'s_jun':s_jun} # 函數(shù)不能打印內(nèi)存地址,但可以把它放入到列表中,再打印內(nèi)存地址(了解即可,(只打印內(nèi)存地址)) # locals 會把函數(shù)當(dāng)中的變量傳遞給'index.html'的這個網(wǎng)頁中去。 file_size=1024 import datetime ctim=datetime.datetime.now() h3='<h3>我倒</h3>' script='<script>alert(1111111111)</script>' # # return render( request,'index.html',{'name':name}) user='s_jun' return render(request,'index.html',locals())
templates/index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>模板語言之變量</title> </head> <body> <p>名字:{{ name }}</p> <p>年齡(數(shù)字類型):{{ age }}</p> <p>列表:{{ li }}</p> <p>元祖:{{ t1 }}</p> <p>集合:{{ s2 }}</p> <p>字典:{{ dic }}</p> <p>函數(shù):{{ test }}</p> <p>對像:{{ s_jun }}</p> <p>列表里套對象:{{ person_list }}</p> <p>字典里套對象:{{ person_dic }}</p> <hr> <h4>深度查詢</h4> <p>列表的第0個值:{{ li.0 }}</p> <p>列表的第3個值:{{ li.3 }}</p> <p>字典取值:{{ dic.name }}</p> <p>字典取列表值:{{ dic.str2.2 }}</p> <p>對象取數(shù)據(jù)屬性:{{ s_jun.name }}</p> <p>對象取綁定給對象的函數(shù)屬性:{{ s_jun.get_name }}</p> <p>對象取綁定給類的函數(shù)屬性:{{ s_jun.cls_test }}</p> <p>對象取靜態(tài)方法:{{ s_jun.static_test }}</p> <p>把對象列表中s_jun年齡取出來:{{ person_list.1.age }}</p> {#不能調(diào)有參數(shù)的方法#} <p>字符串的方法:{{ name.upper }}</p> <h4>模板語言之過濾器</h4> {#后面就是個python中的函數(shù),|前面的,是函數(shù)的第一個參數(shù),冒號后面的是第二個參數(shù)#} <p>統(tǒng)計字符串長度:{{ name|length }}</p> <p>統(tǒng)計列表長度:{{ li | length }}</p> <p>過濾器之默認(rèn)值:{{ l2| default:'空值' }}</p> <p>過濾器之filesizeformat--1: {{443|filesizeformat }}</p> <p>過濾器之filesizeformat--2: {{ file_size|filesizeformat }}</p> <p>過濾器之不使用date:{{ ctim }}</p> <p>過濾器之date:{{ ctim|date:'Y-m-d' }}</p> {#前閉后開區(qū)間#} <p>過濾器之slice:{{ li|slice:'2:-1' }}</p> {#支持步長#} {#<p>過濾器之slice-字符串:{{ name | slice: '0:3:3'}}</p>#} {#三個起步(顯示10個,加上3個...是13個)#} <p>過濾器之truncatechars:{{ 'sdfaasdfdfsfpyyy'| truncatechars:13}}</p> {#根據(jù)空格來 顯示的字段#} <p>過濾器之truncatewords:{{ '奪 jhk jh 我 kjhkl lkj 恥 囲 在 dslafj'| truncatewords:5 }}</p> <p>過濾器之不用safe:{{ h3 }}</p> <p>過濾器之用safe:{{ h3|safe }}</p> <p>過濾器之不用safe:{{ script }}</p> {#<p>過濾器之用safe:{{ script|safe }}</p>#} <p>過濾器之用add:{{ 12|add:'1' }}</p> <p>過濾器之用add:{{ 'egon'| add:'xxx' }}</p> <hr> <h4>模板語言之標(biāo)簽</h4> {% for bar in li %} {{ forloop }} <p>{{ forloop.first }} --->{{ forloop.counter0 }} --->{{ forloop.revcounter }}--->{{ bar }} </p> {% endfor %} <hr> {% for bar in li %} {% for i in person_list %} {# 取出外層是第幾次循環(huán)#} {{ forloop.parentloop.counter }} <p> {{ forloop.first }}--->{{ forloop.counter0 }}---> {{ forloop.revcounter }}----> {{ bar }} </p> {% endfor %} {% endfor %} <hr> {# *************循環(huán)的對象是空,才會走到empty,而不是對象里面的東西為空 #} {% for bar in dic %} <p>{{ bar }}</p> {% empty %} {% endfor %} <hr> {#只循環(huán)字典的話,取到的是key值#} {% for bar in dic %} <p> {{ bar }} </p> {% endfor %} <hr> {#取到value的值#} {% for bar in dic.values %} <p>{{ bar }}</p> {% empty %} {% endfor %} <hr> {#取到key 和 value的值#} {% for k,v in dic.items %} <p>{{ k }}-----> {{ v }}</p> {% empty %} {% endfor %} <hr> {% if user %} <a href="">退出</a> {% else %} <a href="">登錄</a> <a href="">注冊</a> {% endif %} <hr> {#for循環(huán)判斷如果是第一次,打印第一次,其他打印正常值#} {% for bar in li %} {% if forloop.first %} <p>第一次的我</p> {% elif forloop.last %} <p>最后的我</p> {% else %} <p>{{ bar }}</p> {% endif %} {% endfor %} <hr> {#with 相當(dāng)于取別名,作用:變量太長,可以簡化#} {% with name as ttt %} {{ ttt }} {{ name }} {{ user }} {% endwith %} <hr> {% with dic.li.2 as ttt %} {{ ttt }} {{ ttt }} {% endwith %} <hr> {#************for ,if,with 都要有結(jié)束*************#} <h4>自定義標(biāo)簽過濾器</h4> {% load mytag %} {#傳多個參數(shù)的話:可以:'aaa:bb:cc',也可以:傳列表#} <p>{{ 's_jun'| yyy:'nb' }}</p> <h6>使用自定義的標(biāo)簽</h6> <p>{% add_nb 's_jun' %}</p> <p>{% add_3 's_jun' 'is' 'zone' %}</p> <hr> {#過濾器,可以用在if判斷中#} {% if 's_jun'|yyy:'test' %} <p></p> {% endif %} {#標(biāo)簽不能用在if判斷(報錯)#} {#{% if add_nb 's_jun' %}#} {##} {#{% endif %}#} </body> </html>
# 自定義標(biāo)簽過濾器 (最好重啟一下django項目)
app01目錄下,目錄名"templatetags"必須叫這個名字
app01/templatetags/mytag.py
# 第一步,導(dǎo)入template from django.template import Library # 第二步,定義一個叫register的變量=template.Library() register=Library() # 第三步 @register.filter(name='yyy') def str_add(str1,str2): # 業(yè)務(wù)邏輯很復(fù)雜 return str1 + str2 @register.simple_tag() def add_nb(value): return value+'nb' @register.simple_tag() def add_3(value,value2,value3): return value+value2+value3
總結(jié):
上節(jié)回顧:(模板層) 1 模板之變量---{{ }} -支持?jǐn)?shù)字,字符串,布爾類型,列表,字典---相當(dāng)于對它進(jìn)行了打印 -函數(shù)--->相當(dāng)于加括號運行(不能傳參數(shù)) -對象--->內(nèi)存地址,(如果重寫__str__方法,打印的就是返回的內(nèi)容) 2 過濾器 -length---計算長度 -default----設(shè)默認(rèn)值 -filesizeformat---把數(shù)字轉(zhuǎn)成文件大小格式 -截斷字符---最少是三 -截斷單詞 -data----格式化日期類型 -add-----數(shù)字,字符串相加 -slice----切片,首,尾,步長 '1:-1:2' -safe-----把前端代碼渲染到頁面,而不是直接顯示 3 標(biāo)簽 -for --用法跟python一樣 -if --用法跟python一樣 -with --相當(dāng)于取別名 4 自定義標(biāo)簽 -1 在app下創(chuàng)建一個模塊,名字必須叫templatetags -2 創(chuàng)建任意一個py文件,my_tags.py -3 導(dǎo)入:from django.template import Library -4 注冊:register=Library() -5 寫一個函數(shù),用register.simple_tag(name=可以寫一個別名),裝飾一下 -6 使用(重啟) -7 在模板里:{%load my_tags%} -8 {% 函數(shù)名字或者別名 %},傳參,用空格分割 5 自定義過濾器 -1 在app下創(chuàng)建一個模塊,名字必須叫templatetags -2 創(chuàng)建任意一個py文件,my_tags.py -3 導(dǎo)入:from django.template import Library -4 注冊:register=Library() -5 寫一個函數(shù),用register.filter(name=可以寫一個別名),裝飾一下 -6 使用(重啟) -7 在模板里:{%load my_tags%} -8 {{ 函數(shù)名字或者別名 }},傳參,最多傳兩個參數(shù){{'參數(shù)一'|過濾器名字:'參數(shù)二'}} 6 過濾器可以用在if判斷中,標(biāo)簽不能
當(dāng)前標(biāo)題:六、模板語言:變量,過濾器,標(biāo)簽等
網(wǎng)頁路徑:http://muchs.cn/article18/ghspdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、網(wǎng)站內(nèi)鏈、做網(wǎng)站、靜態(tài)網(wǎng)站、企業(yè)建站、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)