一.母板渲染語法
1.變量
{{ 變量 }}
2.邏輯
{% 邏輯語 %}
二.變量
在母板中有變量時,母板引擎會去反向解析找到這個傳來的變量,然后替換掉.
.(點),在母板中是深度查詢據點符,它的查詢順序: 字典 => 屬性或方法 => 數字索引
三.過濾器
1.語法
{{ value|filter_name:參數}}
2.常用內置過濾器
{{ value|default:"nothing"}} 如果變量為空就是用默認值
{{ value|length }} 返回長度,用于字符串和列表
{{ value|filesizeformat}} ? 將變量格式化為文件大小格式
{{ value|slice:"::-1"}} 切片
{{ value|date:"Y-m-d H:i:s"}} ? 格式化時間
{{ value|safe}} ? 設置為安全值,不會誤判為xss攻擊
{{ value|truncatechars:6}} ? 以數量(包含三個點)截斷字符串,剩余部分顯示...
{{ value|truncatewords:6}} ? 以單詞數量截斷字符串,用空格來識別單詞
{{ value|cut:" "}} 移除value中的字符
{{ value|join:"_"}} 用字符串連接列表
四.邏輯標簽
1.for循環
{% for i in lst %}
{{ forloop.counter }}{{ i }}
{% endfor %}
?
forloop.counter 從1開始的索引值
forloop.counter0 ? 從0開始的索引值
forloop.revcounter ? ?倒敘到1
forloop.revcounter0 ? 倒敘到0
forloop.first 判斷當前循環是不是第一個,返回bool
forloop.last 判斷當前循環是不是最后一個,返回bool
forloop.parentloop 獲取本層循環的父級循環對象,能用以上方法
2.for...empty
{% for i in lst %}
{{ i }}
{% empty %}
這個列表lst是空的,不是遍歷到i的值是空的
{% endfor %}
3.if條件判斷,基本支持python中的判斷,但是不支持連續判斷
{% if 條件 %}
結果
{% elif 條件 %}
結果
{% else %}
結果
{% endif %}
4.with 別名
{% with a = 復雜變量 %}? / {% with 復雜變量 as a%}
{{ a }}? ? ? ? 只能在with語句中使用
{% endwith %}
5.csrf_token? 跨站請求偽造保護
{% csrf_token %} 防止post請求登陸時惡意攻擊
五.繼承
1.母板
{% block 變量名 %}
母板預留位置
{% endblock %}
2.繼承板
{% extends "母板.html" %}
{% block 變量名 %}
替換內容
{% endblock %}
3. 組件
{% include "文件名.html" %}
六. 自定義標簽和過濾器
1. 在settings中配置app
2. 在app中創建templatetags的python包(固定)
3.在templatetags中創建py文件,自定義過濾器和標簽


from django import template from django.utils.safestring import mark_safe register = template.Library()@register.filter # 自定義過濾器,只能兩個參數,可以if for def f1(x,y):return x*Y@register.simple_tags #自定義標簽,能接收多個參數 def f2():return 1
4. 使用自定義標簽和過濾器的時候需要導入py文件
{% load py文件 %}
5. 自定義標簽和過濾器的使用
{{ num|filter:y }} num是第一個參數,y是第二個參數,filter是函數名
{% simple_tags 參數1 參數2 ...%} simple_tags是函數名,參數用空格隔開