模版層(templates):css
後端朝前端進行傳遞數據的方式: html
def index(request): # 第一種 n = 6969 # return render(request, 'index.html', {'n': n}) # 第二種 return render(request, 'index.html', locals()) # 將當前所在的名稱空間中的名字所有傳遞給前端頁面
後端傳函數名到前端,會自動加括號調用,可是不支持傳參,前端
後端傳對象到前端,就至關於打印了這個對象python
前端獲取後端傳過來的容器類型的內部元素,統一採用句點符,數字對應的就是數據的索引django
<p>{{ t.1 }}</p>
模版語法的註釋不會展現到前端頁面:{#註釋的內容#}後端
會展現到前端頁面的註釋:<!--我是原生的html註釋-->函數
調用python自帶的方法,能夠調用不須要傳參的一些內置方法,oop
過濾器: spa
<p>前端統計字符串的長度:{{ t|length }}</p>code
<p>前端獲取數據若是就返回default後面的值若是有值就返回{{ t|default:"這是個空!!!" }}</p>
<p>將數字格式化成標識文件大小的單位{{ t|filesizeformat}}</p>
<p>格式化時間不須要加百分號{{ t|date:'Y-m-d'}}</p>
<p>字符串切片{{ t|slice:"0:8"}}</p>
<p>截取固定長度的字符串 三個點也算{{ t|truncatechars:'10' }}</p>
<p>將字符串中的內容渲染成標籤形式的內容,取消轉義{{ t|safe}}</p>
標籤:
先後端取消轉義:
前端:
|safe
後端:
from django.utils.safestring import mark_safe xxx = mark_safe('<h1>index</h1>')
{% for foo in t %} {% if forloop.first %} <p>這個是第一次</p> {% elif forloop.last %} <p>這個是最後一次</p> {% else %} <p>這個只是中間的值!!!</p> {% endif %} {% empty %} <p>我壓根就沒有接收到數據啊!!!</p> {% endfor %}
empty:當你的for循環對象爲空的時候會自動走empty代碼塊中的內容
自定義標籤、過濾器,inclusion_tag:
必須乾的三件事:
一、必須在應用名下新建一個名字,就叫tempalte(必須叫這個名字)
二、在該新建的文件夾內部新建一個任意名稱的py文件
三、在該py文件中須要固定寫下面兩句代碼:
from django import template
register = template.Library()
自定義標籤:
模版的繼承與導入:
首先須要在被繼承的模版中劃分多個區域
{% block 給區域起的別名 %}
{% endblock %}
一般一個模版中至少有三塊content、css、js
子版繼承模版:
現繼承模版的全部內容
{% extends 'home.html' %}
而後根據block的名字修改指定區域的內容
{% block content %}
<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 %}
模版的導入:
將一段html代碼以模塊的方式導入到另外一個html展現
{% include '想導入的一段html文件'%}