一、模板的組成
組成:HTML代碼+邏輯控制代碼
二、邏輯控制代碼
1、變數:使用雙大括號引起來的變數 例:<p>{{name}}</p>
<!--HTML模板--> <body> <h1 style="color: crimson">{{ yeas }}--{{ month}}--{{ day }}</h1> </body>
# python渲染 def dte(req, yeas, month, day): return render(req, 'index1.html', {'yeas': yeas, 'month': month, 'day': day})
2、深度變數查找之句點號
模板不光能決議處理簡單的字串,還能處理更加復雜的資料結構,例如:list、dictionary和自定義的物件等,在 Django 模板中遍歷復雜資料結構的關鍵是句點字符 (.)
串列:
def demo(request): lis = ['張三', '李四', '王五'] return render(request, 'demo.html', {'lis': lis})
<div>這次展現的是串列第一個值----{{lis.1}}</div>

字典:
<div>這次展現的是字典的值----{{ map.name }}</div>
zidian = {'name': "張三", "age": "12", "sex": "男"}
return render(request, 'demo.html', {'map': zidian})
物件:
# 人物類 class Admin: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex def jieshao(self): return '我的名字是%s,性別%s,今年%s歲' % (self.name, self.sex, self.age)
# view zhangsan = Admin("張三","12","男") return render(request, 'demo.html', {'zs': zhangsan})
<div>這次展示的是自定義物件的方法----{{ zs.jieshao }}</div>
3、變數過濾器(filter)
語法:{{ obj | filter :parem}}------》{{變數 | 過濾器函式 :引數}}
<!--常用過濾器--> <!-- 1 add : 給變數加上相應的值 2 addslashes : 給變數中的引號前加上斜線 3 capfirst : 首字母大寫 4 cut : 從字串中移除指定的字符 5 date : 格式化日期字串 6 default : 如果值是False,就替換成設定的默認值,否則就是用本來的值 7 default_if_none: 如果值是None,就替換成設定的默認值,否則就使用本來的值 -->
<div>這次展示的是自定義物件的年齡加20----{{ zs.age|add:20 }}</div> <div>字串第一個大寫{{ str|capfirst }}</div> <div>字串移除指定字符{{ str|cut:" " }}</div> <div>時間格式控制{{ date|date:"Y-m-d" }}</div> render(request, 'demo.html', {'strs': ''}) <div>空值則替換{{ strs|default:'空的串列'}}</div> # 頁面展示為“空的串列“ string = '<a href="12345/12345"> 12345</a>' <div>渲染HTML標簽{{ strs|safe}}</div> <!--safe 會把標簽渲染到頁面而不是字串--> {% autoescape off %} <div>{{ strs }}</div> {% endautoescape %} <!--這種渲染會直接渲染出a標簽和safe相同--> <!-- 顯示渲染值大小{{ a|filesizeformat }} 顯示第一個值{{ a|first }} 顯示長度{{ a|length }} 切割(引數為負值則從后往前切){{ a|slice:"3" }}-->
4、控制陳述句之tag標簽的使用
語法:{% 陳述句 %}
- if--elif--else 判斷
<!--if判斷陳述句 --> {% if zhangsan.age > 30 %} <h1>{{ zhangsan.name }}</h1> {% elif zhangsan.age > 10 %} <h1>{{ zhangsan.jieshao }}</h1> {% else %} <h1>{{ zhangsan.name }}年齡沒超過10</h1> {% endif %}
- if嵌套
<!--if判斷陳述句嵌套 --> {% if zhangsan.age > 30 %} {% if zhangsan.age < 50 %} <!--里層判斷--> <h1>{{ zhangsan.name }}的年齡在30-50之間</h1> {% else %} <h1>{{ zhangsan.name }}的年齡大于50</h1> {% endif %} <!--每個end每個標簽的結束標志--> {% elif zhangsan.age > 10 %} <h1>{{ zhangsan.jieshao }}</h1> {% else %} <h1>{{ zhangsan.name }}年齡沒超過10</h1> {% endif %}
- for回圈
<!--forloop.counter 回圈計數器, counter0從0開始計數, forlooprevcounter倒序來 forloop.first第一次回圈換回傳true,否則回傳false --> <ul> {% for i in lis %} {% if forloop.first %} <li class="fir"> {% else %} <li class="det"> {% endif %} {{ i }} </li> {% empty %} <!--empty 用來判斷是否為空串列--> <h1>沒有資料</h1> {% endfor %} </ul>
- csrf_token和url標簽
<form action="{% url "login"%}" > <input type="text"> <input type="submit"value="提交"> {%csrf_token%} </form>
- {%csrf_token%}:防治跨站攻擊驗證
- {%url "參考地址"%}:參考路由配置
- {%with%} :替換參考名
{% with str=lis123456 %} {{ str }} {% endwith %} - {%verbatim%}:禁止渲染,原樣展現
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/220350.html
標籤:其他
上一篇:Django模板
