模板層html
{{}} 變量相關前端
{%%} 邏輯相關git
前端獲取容器類型的數據統一使用句點符(.)django
模板傳遞值的方式後端
# 以字典的方式傳值
return render(request,'index.html',{'name':'jason','age0':'18'})
# 將全部變量都傳到前臺,弊端是前端不須要的也會傳到前臺
return render(request,'index.html',locals())
過濾器app
語法
{{ obj|filter_name:param }} 變量名|過濾器名稱:變量
default
若是一個變量是false或者爲空,指定默認值
{{ value|default:"nothing" }}
length
返回值的長度
{{ value|length }}
filesizeformat
將值格式化爲一個以B,KB爲單位的字符串
{{ value|filesizeformat }}
date
格式化當前時間
{{ value|date:"Y-m-d" }}
slice
切片
{{ value|slice:"2:-1" }}
truncatechars
超過指定數量以...顯示
{{ value|truncatechars }}
safe
取消轉義
{{ value|safe }}
後端實現
from django.utils.safestring import mark_safe
ss = mark_safe("<h1>我是h1</h1>")
標籤函數
for標籤:遍歷每個元素
{% for person in person_list %}
<p>{{ person.name }}</p>
{% endfor %}
能夠經過{{ forloop }}來獲取循環序號
{% empty %}當被循環的對象爲空時執行empty後的語句
if標籤
與後端邏輯相同
with標籤
當一個名字太過複雜能夠取別名
{% with 名字 as 別名 %}
{% endwith %}
自定義標籤,過濾器,inclusion_tagoop
都必須作的事
1 必須在app下新建一個名爲templatetags的文件夾
2 在文件夾下建立任意名稱的py文件
3 在文件內寫下面兩句話
from django import template
resgiter = template.Library()
4 在html文件中使用時須要加載:{% load 文件名 %}
過濾器
使用的裝飾器:@register.filter()
使用方式與過濾器相同
標籤
使用的過濾器:@register.simpl_tag()
使用的方式與標籤相同
inclusion_tag
調用可以返回一段html代碼
使用的裝飾器:@inclusion_tag("存放html代碼的文件")
使用方式:{% 函數名 參數 %}
模板的繼承spa
寫一個模板,留出擴展的區域,能夠留多個區域,區域留的越多可擴展性就越高code
{% extends 模板文件 %}
{% block 名字 %}
{% endblock %}
在子模板中使用原模板內的內容:{{ block.super }}
模板的導入
寫一個組件,能夠被重複使用
{% include "模板文件" %}