Python后台開發Django( 模板 與 值匹配 )


 模板文件(templates)

在setting.py中,設置模板存放位置

 

在APP中view的使用

from django.shortcuts import render #導入
def homex(requestx):
   return render(requestx,"loginx.html") #返回文件

頁面模板

實現頁面的布局重復利用,建立模板中內部的名字如果在匹配中沒有進行值替換,則顯示原數據

建立頁面模板

在需要替換值的地方寫入如下即可,其中dongdata1為內部名字,模板文件名任意,如tempx.html

{% block dongdata1 %} <span>555</span> {% endblock %}
{% block dongdata2 %} <spna>666</spna>{% endblock %}

使用頁面模板

在使用模板的HTML文件中進行值替換

<!--繼承模板的文件名,只能有一個 -->
{% extends "tempx.html" %} <!--替換模板的對應值--> {% block dongdata1 %} <div>222222222222222222</div> {% endblock %} {% block dongdata3 %} <h1>東小東</h1> {% endblock %}

頁面模板2

引入HTML片段,在指定的地方引入,一個文件中可以多出引用

{% 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  -->


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM