在setting.py中,設置模板存放位置html
在APP中view的使用數據庫
from django.shortcuts import render #導入
def homex(requestx):
return render(requestx,"loginx.html") #返回文件
頁面模板django
實現頁面的佈局重複利用,創建模板中內部的名字若是在匹配中沒有進行值替換,則顯示原數據瀏覽器
創建頁面模板app
在須要替換值的地方寫入以下便可,其中dongdata1爲內部名字,模板文件名任意,如tempx.htmloop
{% block dongdata1 %} <span>555</span> {% endblock %}
{% block dongdata2 %} <spna>666</spna>{% endblock %}
使用頁面模板佈局
在使用模板的HTML文件中進行值替換spa
<!--繼承模板的文件名,只能有一個 -->
{% extends "tempx.html" %} <!--替換模板的對應值--> {% block dongdata1 %} <div>222222222222222222</div> {% endblock %} {% block dongdata3 %} <h1>東小東</h1> {% endblock %}
頁面模板2code
引入HTML片斷,在指定的地方引入,一個文件中能夠多出引用htm
{% include "tempx2.html" %}
簡單值替換:
傳遞單獨變量,也能夠是字典和列表
模板(templates)的html文件中,註冊變量
<h1>{{dongkk1}}</h1> <h2>{{dongkk2}}</h2>
APP控制器(views)設置匹配值
from django.shortcuts import render #導入 return render(requestx, "loginx.html",{"dongkk1":"替換值1","dongkk2":"替換值2"}) # 返回文件
列表:
return render(requestx, "loginx.html",{"listxto":["x1","x2","x3"]}) # 返回文件
取值
{{listxto.0}}
字典:
return render(requestx, "loginx.html",{"dictxto":{"d1":"dong11","d2":"dong22"}}) # 返回文件
取值
{{dictxto.d2}}
條件判斷
{% if dongx > 19 %} <img src="static/img/an.png"> {% else %} <img src="static/img/kkz.png"> {% endif %}
循環替換:
相似於PHP的volist功能,實如今視圖文件中進行列表的循環遍歷,最常會使用其進行數據庫表格的遍歷顯示。
APP控制器(views)設置匹配值
1 from django.shortcuts import render #導入 2 listx = [] 3 listx.append({"id": 1, "user": "dong1", "name": "dongxiaodong1"}) 4 listx.append({"id": 2, "user": "dong2", "name": "dongxiaodong2"}) 5 listx.append({"id": 3, "user": "dong3", "name": "dongxiaodong3"}) 6 return render(requestx, "loginx.html",{"listxto":listx}) # 返回文件
模板(templates)的html文件中,註冊變量
1 <table border="1"> 2 <!--表格頭--> 3 <thead> 4 <tr> 5 <th>id</th> 6 <th>用戶名</th> 7 <th>暱稱</th> 8 </tr> 9 </thead> 10 <!--表格內容--> 11 <tbody> 12 <!--循環遍歷--> 13 {% for rowx in listxto %} 14 <tr> 15 <td>{{rowx.id}}</td> 16 <td>{{rowx.user}}</td> 17 <td>{{rowx.name}}</td> 18 </tr> 19 {% endfor %} 20 </tbody> 21 </table>
循環特殊匹配值
爲循環添加升序序號,起始爲1:【<td>{{forloop.counter}}</td>】
爲循環添加升序序號,起始爲0:【<td>{{forloop.counter0}}</td>】
爲循環添加倒序序號,起始爲1:【<td>{{forloop. revcounter}}</td>】
爲循環添加倒序序號,起始爲0:【<td>{{forloop.revcounter0}}</td>】
查看是不是第一條循環,返回bool【{{forloop.first}}】
查看是不是最後一條循環,返回bool【{{forloop.last}}】
是否支持html代碼
值匹配時若是傳遞的值是html的代碼,顯示時會以原字符串顯示,不會被瀏覽器解釋,若是加上【|safe】則表示此值能夠被瀏覽器解釋
{{ dongname|safe}}
自定義修飾符:
在Django工程的setting.py的【INSTALLED_APPS = []】添加對應APP的名字【'dongapp2',】
在對應的APP下創建templatetags目錄,並在目錄下創建任意名字的Python文件,如Dongtemp.py
Dongtemp.py下:
1 from django import template 2 register = template.Library() 3 #*****方式一**************************** 4 #不帶參數 5 @register.simple_tag 6 def dongstr(): 7 return "東小東小" 8 #帶參數,參數可有任意個 9 @register.simple_tag 10 def dongcom(x,y): 11 return x+y 12 #*****方式二************************** 13 #最多帶兩個參數 14 @register.filter 15 def dongstr222(x,y): 16 return x+"--"+y 17 #帶一個參數 18 @register.filter 19 def dongstr333(x): 20 return str(x).upper()
在視圖模板中使用
{% load Dongtemp %}
<div>{% dongstr %}</div> <!-- 東小東小 -->
<div>{% dongcom 10 30 %}</div><!-- 40 -->
<div>{{"參數1"|dongstr222:"參數2"}}</div><!-- 參數1--參數2 -->
<div>{{"xYz"|dongstr333}}</div><!-- XYZ -->