標(biāo)簽simple_tag:
欒城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!標(biāo)簽:在HTML中使用{% %}標(biāo)記
常見(jiàn)的系統(tǒng)內(nèi)自帶的標(biāo)簽:load、for 、if、with、csrf_token、verbatim、
block-endblock\extends\comment-endcomment\cycle(silent)\自定義標(biāo)簽
1、with:
在html里給變量賦值
{%?with?name=obj.group.name%}????????#?用于長(zhǎng)變量賦值 {{name}}???????????????????????????#?直接調(diào)ip,顯示host.name.ip的值2、csrf_token:
之前在使用form表單時(shí),提示Forbidden:CSRF verification failed. Request aborted,
解決方法1、在settings里注釋掉中間件CSRF
解決方法2、在form表單里添加csrf_token標(biāo)簽
<form?action="checkuser/"?method="post"> <input?type="text"?name="username"?placeholder="用戶名"?/> <input?type="text"?name="password"?placeholder="密碼"?/> <input?type="submit"?value="登?陸"?/> {%?csrf_token?%}?{#使用此句,無(wú)需注釋掉中間件的CSRF#}??????? </form>3、verbatim
取消渲染模板標(biāo)記,以文字顯示verbatim里面的內(nèi)容
{%?verbatim?%} ????{{?for?i?in?[1,2,3,4]?}} ????{{?i?}} ????{{?endfor?}} {%?endverbatim?%} 網(wǎng)頁(yè)顯示結(jié)果: ?{{?for?i?in?[1,2,3,4]?}}?{{?i?}}?{{?endfor?}}4、autoescape、識(shí)別、不識(shí)別含有html標(biāo)簽的字符串,默認(rèn)不識(shí)別html標(biāo)簽,與過(guò)濾器safe,django的mark_safe作用一樣????
參數(shù):on、off,默認(rèn)on
html_str?=?"<a?href='f-t'>點(diǎn)我</a>" {%?autoescape?off?%} ????{{?html_str?}} {%?endautoescape?%} #?結(jié)果: 點(diǎn)我 {%?autoescape?off?%} ????{{?html_str?}} {%?endautoescape?%} #?結(jié)果: <a?href='f-t'>點(diǎn)我</a>5、comment注釋
{%?comment?%} ????此段內(nèi)容不顯示在網(wǎng)頁(yè)上 {%?endcomment?%}6、cycle,循環(huán)迭代,重復(fù)1到4,遇到resetcycle,重新從1開始,silent使用上一個(gè)值
{%?cycle?'1'?'2'?'3'?'4'?as?num%} {%?cycle?num?%} {%?cycle?num?silent?%}????????#?重復(fù)輸出2 {%?resetcycle?%} {%?cycle?num?%} {%?cycle?num?%} {%?cycle?num?%} {%?cycle?num?%} #?應(yīng)用場(chǎng)景:隔行變色 {%?for?i?in?list%} <tr?class={%?cycle?'blue'?'red'?%}>lala</tr> {%endfor%}7、debug輸入調(diào)試信息
{%?debug?%}8、firstof????輸入?yún)?shù)中,第一個(gè)不為空或false的參數(shù)
{%?firstof??da??'e'?'f'?%} #?因?yàn)閐a是未定義的變量名,結(jié)果:?'e'9、自定義simple_tag:
3固定原則:在APP中新建包名是固定:templatetags
?在views中,Library實(shí)例化名字固定:register=template.Library()
?自定義函數(shù),使用register.simple_tag裝飾
使用:在HTML上方{% load 定義的python文件%}
#?在templatetags下新建python文件,custom_tag.py #?導(dǎo)入template from?django?import?template #?實(shí)例化 register?=?template.Library()????????#?register固定,不可變?yōu)槠渌? @register.simple_tag?????????????????#?裝飾daxie def?daxie(str1): ????#?把字符串變成大寫。 ????str1?=?str(str1).upper()???? ????return?str1#?在HTML中上方載入自定義的python文件 {%?load?custom_tag?%} {%?daxie?'WERWERFSEFkjdDFGSdfeflnnidhggindSDGSEGSFVBNHR'?%} #?參數(shù)直接寫在simple_tag名字的后面,可以有多個(gè) #結(jié)果# WERWERFSEFKJDDFGSDFEFLNNIDHGGINDSDGSEGSFVBNHR過(guò)濾器filter:
支持鏈?zhǔn)讲僮?,每個(gè)結(jié)果都依次傳入下個(gè)|的過(guò)濾器
過(guò)濾器調(diào)用格式{{ 值|過(guò)濾器名1:參數(shù)1|過(guò)濾器名2:參數(shù)2|...........}}
說(shuō)明:
值:只能傳一個(gè)
管道符|:左右都不能帶空格
過(guò)濾器名:函數(shù)名
:左右也不能帶空格
參數(shù):也只能傳一個(gè),多個(gè)值可以使用加引號(hào)的字典或列表,"{'name':'david','age':19}"
? 1、內(nèi)置過(guò)濾器有30個(gè):add\default\length\filesizeformat\slice\date\safe\truncatechars\truncatewords\cut\join\add\urlencode
#?add?前值加 {{?30|add:'?1'|add:'?3'|add:'?2'|add:'?4'|add:'?5'?}}???#?多個(gè)|每次傳遞前面的值 #?結(jié)果:sq?1?3?2?4?5 #?urlencode還記得javascript地址轉(zhuǎn)換嗎,一樣樣的 {{?"http://127.0.0.1:8000/a/test/666"|urlencode?}} 結(jié)果:http%3A//127.0.0.1%3A8000/a/test/666 <br> #?join?使用指定字符連接列表或字符 #?views傳入{'ls':[122,111,555]} {{?ls|join:'@'?}} 結(jié)果:122@111@555 {{?'1????2232'|join:'-'?}} 結(jié)果:1-?-?-?-?-2-2-3-2 <br> #?cut?從字符串中刪除指定字符串 {{?'1112312312311221313'|cut:'23'?}} 結(jié)果:1111111221313 <br> #?truncatechars從第n個(gè)字符刪除 {{?'1234567890'|truncatechars:2?}} 結(jié)果:1... <br> #?truncatewords?以空格計(jì)算單詞個(gè)數(shù),保留n個(gè)單詞 {{?'123?456?78?90'|truncatewords:2?}} 結(jié)果:123?456?… <br> #?safe變量值是安全的,使HTML字符串轉(zhuǎn)義,link?=?"<p><a? {{?link?}} {#結(jié)果:<p><a?>超鏈接</a>?</p>#} {{?link|safe?}} 結(jié)果:超鏈接 <br> #?date?格式化日期,傳入的是datetime.datetime.now() {{?dt|date:"Y-m-d?H:i:s"?}} #?結(jié)果:2019-10-11?14:58:16 {{?dt|date?}} #?結(jié)果:Oct.?11,?2019 <br> #?slice切片: {{?'0123456'|slice:"0:3"?}} #?結(jié)果:0123 <br> #?filesizeformat,將數(shù)值轉(zhuǎn)換為計(jì)算機(jī)單位 {{?1000|filesizeformat?}}???#?1000?bytes {{?10000|filesizeformat?}}??#?9.8?KB {{?1000000000|filesizeformat?}}?#?953.7?MB <br> #?default?如果前面的變量為空或不存在,顯示默認(rèn)值,不改變sname的值 {{?sname|default:'none'?}} #?結(jié)果:?none <br> #?length?返回長(zhǎng)度 {{?'abc'|length?}}? ??2、自定義filter:
定義方式與simple_tag一樣,調(diào)用方式不一樣。
4固定原則:在APP中新建包名是固定:templatetags
?在views中,Library實(shí)例化名字固定:register=template.Library()
?HTML里調(diào)用格式固定
?自定義函數(shù),使用register.filter裝飾
????????????????? ?只能使用兩個(gè)值,通常一個(gè)是修飾前,一個(gè)是修飾參數(shù)
使用:在HTML上方{% load 定義的python文件%}
調(diào)用:使用{{}}調(diào)用 ,格式:{{ str|filtername:args }}
#?在templatetags下新建python文件,custom_filter.py from?django?import?template???????????????????????#?導(dǎo)入template模塊 register?=?template.Library()??????????????????????#?實(shí)例化,名字必須是register @register.filter def?filter_ellipsis(str1,?args1):?????????#?最多兩個(gè)參數(shù) ????#?把str1截取args1長(zhǎng)度并加...返回給前端 ????if?len(str1)?>?args1: ????????str1?=?str1[:args1]?+?r"..." ????return?str1在HTML中上方載入自定義的python文件
{%?load?custom_tag?%} {{?"01234567890123456789012345678901234567890123456789"|filter_ellipsis:20?}} #?結(jié)果: 01234567890123456789...Filter與simple_tag區(qū)別:
1、HTML標(biāo)記不一樣,filter使用{{}},tag使用{%%}
2、filter可以在if/for里用于條件判斷,tag不可以
3、filter最多傳兩個(gè)參數(shù),tag可以多個(gè)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:Django模板語(yǔ)言-2:simple_tag和filter-創(chuàng)新互聯(lián)
文章來(lái)源:http://www.rwnh.cn/article8/csooop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、商城網(wǎng)站、網(wǎng)站導(dǎo)航、虛擬主機(jī)、做網(wǎng)站、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容