{{ }} 變量相關
{%%} 邏輯相關css
ps: 前端獲取後端傳過來的容器類型的內部元素 統一採用句點符(.)html
{{ value|safe}}前端
先後端取消轉義:
前端:
|safe
後端:
from django.utils.safestring import mark_safe
zzz = mark_safe('<h1>牀前明月 光</h1>')django
{{ value|truncatechars:9}}後端
{{ value|cut:' ' }}app
{% for foo in d.keys %} <p>{{ foo }}</p> {% endfor %} {% for foo in d.values %} <p>{{ foo }}</p> {% endfor %} {% for foo in d.items %} <p>{{ foo }}</p> {% endfor %}
for循環可用的一些參數:函數
Variable | Description |
---|---|
forloop.counter | 當前循環的索引值(從1開始) |
forloop.counter0 | 當前循環的索引值(從0開始) |
forloop.revcounter | 當前循環的倒序索引值(從1開始) |
forloop.revcounter0 | 當前循環的倒序索引值(從0開始) |
forloop.first | 當前循環是否是第一次循環(布爾值) |
forloop.last | 當前循環是否是最後一次循環(布爾值) |
forloop.parentloop | 本層循環的外層循環 |
<ul> {% for user in user_list %} <li>{{ user.name }}</li> {% empty %} <li>空空如也</li> {% endfor %} </ul>
if,elif和elseoop
{% if user_list %} 用戶人數:{{ user_list|length }} {% elif black_list %} 黑名單數:{{ black_list|length }} {% else %} 沒有用戶 {% endif %}
固然也能夠只有if和elsecode
{% if user_list|length > 5 %} 七座豪華SUV {% else %} 黃包車 {% endif %}
ps: if語句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷。orm
能夠給一個比較複雜的取值操做取一個別名 以後在with語句中 就可使用該別名
{% with l.6.3.name as ttt %} {{ ttt }} {{ l.6.3.name }} {% endwith %}
這個標籤用於跨站請求僞造保護。
在頁面的form表單裏面寫上 {% csrf_token %}
在app位置建立一個 templatetags文件加 裏面放相關的邏輯py文件
from django import template
@register.filter(name="nash") # 自定義過濾器只是帶有一個或兩個參數的Python函數
@register.filter(name="nash") def index(a,b): print('下午剛起牀 一臉懵逼') return a + b
先導入 格式爲 {{ 操做對象(做爲第一個參數傳入)|名字(可寫==> :另外一個參數) }}
{# 先導入咱們自定義filter那個文件 #} {% load app01_filters %} {# 使用咱們自定義的filter,這邊對於的是取的名字 #} {{ "hello"|nash:"world" }}
@register.simple_tag(name="nash") # 標籤函數能夠可傳多參數
@register.simple_tag(name='apan') def xxx(a,b,c,year): return '%s?%s|%s{%s'%(a,b,c,year)
先導入 格式爲 {% 名字 空格隔開的參數 %}
{# 先導入咱們自定義simple_tag那個文件 #} {% load app01_simple_tag %} {# 使用咱們自定義的simple_tag #} {% apan "9 "22 "11:41" "2019" %}
多用於返回html代碼片斷
@register.inclusion_tag(模版名,name=名字)
先導入 {% load 名字 %} 格式 {% 函數名 參數 %}
咱們一般會在母板中定義頁面專用的CSS塊和JS塊,方便子頁面替換。
母版
{% block 給區域起的名字 %} {% endblock %} 一般狀況下一個模板中應該至少有三塊 {% block css %} 頁面css代碼塊 {% endblock %} {% block js %} 頁面js代碼塊 {% endblock %} {% block content %} 頁面主體內容 {% endblock %} 子板繼承模板 先繼承模板全部的內容 {% extends 'home.html' %} 而後根據block塊的名字修改指定區域的內容 {% block content %} <h1>登陸頁面</h1> <form action=""> <p>username:<input type="text" class="form-control"></p> <p>password:<input type="text" class="form-control"></p> <input type="submit" class="btn btn-success"> </form> {% endblock %}
經過在母板中使用{% block xxx %}
來定義"塊"。
在子頁面中經過定義母板中的block名來對應替換母板中相應的內容。
{% block page-main %} <p>世情薄</p> <p>人情惡</p> <p>雨送黃昏花易落</p> {% endblock %}
能夠將經常使用的頁面內容如導航條,頁尾信息等組件保存在單獨的文件中,而後在須要使用的地方按以下語法導入便可。
{% include 'navbar.html' %}
{% load static %} <img src="{% static "images/hi.jpg" %}" alt="Hi!" />
引用JS文件時使用:
{% load static %} <script src="{% static "mytest.js" %}"></script>