Django4.1_template之變量和過濾器

一.簡述
在如今的web實際開發中,爲了更加規範的編碼及方便後期的項目規劃,咱們要求先後端分離,前端更進一步要求佈局(HTML)、樣式(CSS)、行爲(JS)分離。在django中,咱們把template分離出來做爲一個獨立的模塊來處理HTML。本章節主要講解django中的template模塊的使用。
二.模板語法
模板組成:HTML+邏輯代碼
三.模板之邏輯代碼
1.模板渲染的原理
兩個概念:
template:模板
context:上下文
渲染原理(過程):
A.Django先經過Template生成一個實例化template對象;
B.Diango再經過Context生成一個實例化context對象;
C.Djangi經過template實例調用渲染方法(例如:render())來渲染生成結果;
如圖:
Django4.1_template之變量和過濾器
代碼塊以下:html

from django.template import Template,Context
template = Template("welcome to {{name}}.")
context = Context({'name':'浙江'})
template.render(context)
'welcome to 浙江.'前端

注:以上的過程是在django內部實現的,比較複雜,因此咱們直接使用django封裝好的方法實現該效果便可,即render(request,’template對象文件’,data)或render(request,’template對象文件’,local())
同一個模板對象能夠重複使用。
2.模板之變量
2.1格式:{{varname}}
在HTML中使用雙引號包裹變量名,再經過view中將變量對應的值傳過來(傳值有兩種方式:1.{key:value};2.locals())。
實例代碼以下:
Django4.1_template之變量和過濾器
Django4.1_template之變量和過濾器
Django4.1_template之變量和過濾器
2.2變量的類型及變量深度查詢
變量能夠是字符串、字典、列表、元組、對象等等。
如圖:
Django4.1_template之變量和過濾器web

Django4.1_template之變量和過濾器
頁面效果圖:
Django4.1_template之變量和過濾器
注:在template中使用的均是深度查詢,即只能經過符號.(點)進行下一級查詢且全部的序列數據類型均能使用索引正常查詢但不能使用方括號的格式,只能使用var.index的格式,不能使用var[index]或dic[key]的格式。
2.3
3.模板之過濾器
注:該部分圖片來自網絡(若有侵權,聯繫刪除)
Django4.1_template之變量和過濾器
Django4.1_template之變量和過濾器
Django4.1_template之變量和過濾器
Django4.1_template之變量和過濾器
Django4.1_template之變量和過濾器django

4.重點:自定義過濾器filter
上面給去了一些經常使用的過濾器,也是django給咱們提供好的方法,可是若是須要某些特定功能的函數呢?而django只是提供了公用的方法,此時咱們可使用django的filter的自定義方法。
1.首先須要使用的app中建立templatetags模塊(必需要有且爲Package文件類型)
2.在templatetags模塊中新建任意.py文件,如:mytags.py
3.在py文件中自定義相應的filter函數代碼,以下所示:後端

from django import template
from django.utils.safestring import mark_safe
register = template.Library()       #register的名字是固定的,不可改變

#自定義一個multi函數
@register.filter
def multi(x,y):         #自定義過濾器函數
    return x*y

#自定義一個multi函數
@register.simple_tag
def tag_multi(x,y,z):       #自定義標籤函數
    return x*y*z

4.在要使用自定義的filter函數的HTML文件中導入以前建立的mytags.py文件,即:{% load mytags %}瀏覽器

{% load mytags %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>myfilter</title>
</head>
<body>
    <p>{{ person.name }}的年齡爲:{{ person.age}}</p>
    <p>{{ person.name }}的年齡*10爲:{{ person.age|multi:10 }}</p>
</body>
</html>

5.在該HTML文件中使用自定義filter函數,以下:網絡

{% load mytags %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>myfilter</title>
</head>
<body>
    <p>{{ person.name }}的年齡爲:{{ person.age}}</p>
    <p>{{ person.name }}的年齡*10爲:{{ person.age|multi:10 }}</p>       {# 使用自定義的filter函數 #}
</body>
</html>

6.注意:a要在setting中的INSTALLED_APPS配置當前的app,以下圖,否則django會沒法找到自定義的mytags.py文件。b.新建mytags.py文件後重啓該項目;c.filter函數只能接收2個參數(大括號|前面一個爲此處的第一個參數)。
Django4.1_template之變量和過濾器app

7.最終在瀏覽器上顯示效果如圖所示:
Django4.1_template之變量和過濾器前後端分離

8.總結圖:
Django4.1_template之變量和過濾器ide

歡迎關注筆者我的公衆號:
Django4.1_template之變量和過濾器

相關文章
相關標籤/搜索