語法
{% 開始標簽 %}
....
{% 結束標簽%}
if標簽
例:{% if ... %}
{% elif %}
{% else %}
{% endif %}
if陳述句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷,
for標簽
# for 標簽帶有一個可選的{% empty %} 從句,以便在給出的組是空的或者沒有被找到時,可以有所操作,
{% for person in person_list %}
{{ person.name }}
{% empty %}
sorry,no person here
{% endfor %}
注:回圈序號可以通過{{forloop}}顯示
?forloop.counter 當前回圈的索引值(從1開始)
forloop.counter0 當前回圈的索引值(從0開始)
forloop.revcounter 當前回圈的倒序索引值(從1開始)
forloop.revcounter0 當前回圈的倒序索引值(從0開始)
forloop.first 當前回圈是不是第一次回圈(布林值)
forloop.last 當前回圈是不是最后一次回圈(布林值)
forloop.parentloop 本層回圈的外層回圈
with標簽
# with起別名
{% with d.hobby.3.info as nb %}
<p>{{ nb }}</p>
在with語法內就可以通過as后面的別名快速的使用到前面非常復雜獲取資料的方式
{% endwith %}
自定義過濾器、標簽、inclusion_tag
先三步走
1.在應用下創建一個名字”必須“叫templatetags檔案夾
2.在該檔案夾內創建“任意”名稱的py檔案 eg:mytag.py
3.在該py檔案內"必須"先書寫下面兩句話(單詞一個都不能錯)
from django import template
register = template.Library()
4.然后在再其中輸入需要自定義的東西,如下:
"""
# 自定義過濾器
@register.filter(name='baby')
def my_sum(v1, v2):
return v1 + v2
# 使用
{% load mytag %} #模板層加載mytag檔案
<p>{{ n|baby:666 }}</p>
# 自定義標簽(引數可以有多個) 類似于自定義函式
@register.simple_tag(name='plus')
def index(a,b,c,d):
return '%s-%s-%s-%s'%(a,b,c,d)
# 使用
標簽多個引數彼此之間空格隔開
<p>{% plus 'jason' 123 123 123 %}</p>
# 自定義inclusion_tag
"""
內部原理
先定義一個方法
在頁面上呼叫該方法 并且可以傳值
該方法會生成一些資料然后傳遞給一個html頁面
之后將渲染好的結果放到呼叫的位置
"""
@register.inclusion_tag('left_menu.html')
def left(n):
data = https://www.cnblogs.com/suncolor/p/['第{}項'.format(i) for i in range(n)]
# 第一種
# return {'data':data} # 將data傳遞給left_menu.html
# 第二種
return locals() # 將data傳遞給left_menu.html
{% left 5 %}
# 總結:當html頁面某一個地方的頁面需要傳引數才能夠動態的渲染出來,并且在多個頁面上都需要使用到該區域 那么就考慮將該區域頁面做成inclusion_tag形式
(在講bbs的時候會使用到)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505462.html
標籤:Python
上一篇:TP6框架--CRMEB學習筆記:專案初始化+環境配置
下一篇:django中的視圖層
