模板引擎語法-過濾器

模板引擎語法-過濾器

文章目錄

  • 模板引擎語法-過濾器
    • @[toc]
    • 1.default過濾器
    • 2.default_if_none過濾器
    • 3.length過濾器
    • 4.addslashes過濾器
    • 5.capfirst過濾器
    • 6.cut過濾器
    • 7.date過濾器
    • 8.dictsort過濾器

1.default過濾器

default過濾器用于設置默認值。default過濾器對于變量的作用:如果變量為false或“空”,則使用給定的默認值:否則使用變量自己的值。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['default'] = "default"context['default_nothing'] = ""template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了第一個屬性default,并賦值為字符串“default”。

在變量context中添加了第二個屬性default_nothing,并賦值為空字符串。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - default:<br><br>{{ default | default:"nothing" }}<br><br>{{ default_nothing | default:"nothing" }}<br><br>
</p></body>
</html>

【代碼分析】

對變量default使用了default過濾器(默認值為字符串“nothing”)。

對變量default_nothing再次使用了同樣的default過濾器(默認值為字符串“nothing”)

文件路徑【TmplSite/gramapp/urls.py】

from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'),path('filters/', views.filters, name='filters'),
]

【訪問驗證】

變量default經過default過濾器處理后,仍舊輸出了自身定義的值,因為變量default的值不為空。而變量default_nothing經過default過濾器處理后,輸出了過濾器定義的值nothing,這是因為變量default_nothing的值定義為空。

在這里插入圖片描述


2.default_if_none過濾器

default_if_none過濾器對于變量的作用:如果變量為None,則使用給定的默認值;否則,使用變量自己的值。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['default'] = "default"context['defaultifnone'] = Nonetemplate = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了第一個屬性default,并賦值為字符串“default”。

在變量context中添加了第二個屬性defaultifnone,并賦值為None。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - default_if_none:<br><br>{{ default | default_if_none:"var is None!" }}<br><br>{{ defaultifnone | default_if_none:"var is None!" }}<br><br>
</p></body>
</html>

【代碼分析】

對變量default使用了default_if_none過濾器(默認值為字符串“var is None!”)。

對變量defaultifnone使用了同樣的default_if_none過濾器(默認值同樣為字符串“var is None!”)。

【訪問驗證】

變量default經過default_if_none過濾器處理后,仍舊輸出了自身定義的值,因為變量default的值不為None。而變量defaultifnone經過default_if_none過濾器處理后,輸出了過濾器定義的值"var is None!",這是因為變量defaultifnone的值定義為None。

在這里插入圖片描述


3.length過濾器

該過濾器可以獲取字符串、列表、元組、和字典等對象類型的長度。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['lenAlpha1'] = "abcde"context['lenAlpha2'] = ['a', 'b', 'c', 'd', 'e']context['lenAlpha3'] = ('a', 'b', 'c', 'd', 'e')context['lenAlphaDic'] = { 'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5 }template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了第一個屬性lenAlpha1,并賦值為字符串“abcde”。

在變量context中添加了第二個屬性lenAlpha1,并賦值為一個列表[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]。

在變量context中添加了第三個屬性lenAlpha3,并賦值為一個元組(‘a’, ‘b’, ‘c’, ‘d’, ‘e’)。

在變量context中添加了第四個屬性lenAlphaDic,并賦值為一個字典{ ‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5 }。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - length:<br><br>{{ lenAlpha1 }} length : {{ lenAlpha1 | length }}<br><br>{{ lenAlpha2 }} length : {{ lenAlpha2 | length }}<br><br>{{ lenAlpha3 }} length : {{ lenAlpha3 | length }}<br><br>{{ lenAlphaDic }} length : {{ lenAlphaDic | length }}<br><br>
</p></body>
</html>

【代碼分析】

分別通過過濾器length對一組變量(字符串類型、列表類型、元組類型和字典類型)進行過濾操作。

【訪問驗證】

變量(字符串類型、列表類型、元組類型和字典類型)經過length過濾器處理后,輸出的長度均為5。
在這里插入圖片描述


4.addslashes過濾器

該過濾器會在引號前面添加反斜杠字符(\),常用于字符轉義。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['add_slashes'] = "This's a django app."template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了一個屬性add_slashes,并賦值為一個字符串(包含有單引號)。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - addslashes:<br><br>{{ add_slashes }} addslashes {{ add_slashes | addslashes }}<br><br>
</p></body>
</html>

【代碼分析】

通過過濾器addslashes對變量add_slashes進行過濾操作,在單引號前面插入反斜杠字符(\)。

【訪問驗證】
在這里插入圖片描述


5.capfirst過濾器

該過濾器會將首字母大寫。而如果第一個字符不是字母,則該過濾器將不會生效。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['cap_first'] = "django"context['cap_first_0'] = "0django"template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了第一個屬性cap_first,并賦值為一個小寫字符串(“django”)。

在變量context中添加了第二個屬性cap_first_0,并賦值為一個字符串(“0django”),首字符為數字0。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - capfirst:<br><br>{{ cap_first }} cap_first {{ cap_first | capfirst }}<br><br>{{ cap_first_0 }} cap_first {{ cap_first_0 | capfirst }}<br><br>
</p></body>
</html>

【代碼分析】

通過capfirst過濾器對變量cap_first進行過濾操作,將首字符的小寫字母轉換為大寫字母。

通過capfirst過濾器對變量cap_first進行過濾操作,測試一下該過濾器對首字符為數字的字符串是否有效。

【訪問驗證】
在這里插入圖片描述

6.cut過濾器

該過濾器會移除變量中所有的與給定參數相同的字符串。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['cut_space'] = "This is a cut filter."template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了一個屬性cut_space,并賦值為一個帶有空格的字符串。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - cut:<br><br>{{ cut_space }} cut {{ cut_space | cut:" " }}<br><br>
</p></body>
</html>

【代碼分析】

通過cut過濾器對變量cut_space進行過濾操作,并定義過濾器參數為空格字符(“”)。

【訪問驗證】

變量在經過處理后,字符串中的空格被全部刪除了。

在這里插入圖片描述


7.date過濾器

該過濾器會根據給定格式對一個日期變量進行格式化操作。date過濾器定義了若干個格式化字符,下面介紹幾個比較常見的格式化字符:

  • b:表示月份,小寫字母形式(3個字母格式)。例如,jan、may、oct等。
  • c:表示ISO 8601時間格式。例如,2020-08-08T08:08:08.000888+08:00。
  • d:表示日期(帶前導零的2位數字)。例如,01~31。
  • D:表示星期幾。例如,Mon、Fri、Sun等。
  • f:表示時間。例如,9:30。
  • F:表示月份(文字形式)。例如,January。
  • h:表示12小時格式。例如,1~12。
  • H:表示24小時格式。例如,0~23。
  • i:表示分鐘。例如,00~59。
  • j:表示沒有前導零的日期。例如,1~31。
  • 1:表示星期幾(完整英文名)。例如,Friday。
  • m:表示月份(帶前導零的2位數字)。例如,01~12。
  • M:表示月份(3個字母的文字格式)。例如,Jan。
  • r:表示RFC5322格式化日期。例如,Thu,08 Dec 2020 08:08:08 +0200。
  • s:表示秒(帶前導零的2位數字)。例如,00~59。
  • S:表示日期的英文序數后綴(兩個字符)。例如,st、nd、rd、th。
  • U:表示自Unix Epoch(1970年1月1日00:00:00 UTC)以來的秒數。
  • y:表示年份(2位數字)。例如,99。
  • Y:表示年份(4位數字)。例如,1999

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['now'] = datetime.now()template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

通過import引入了datetime模塊。

在變量context中添加了一個屬性now,并通過datetime對象獲取了當前時間。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - date:<br><br>{{ now | date }}<br><br>{{ now | date:"SHORT_DATE_FORMAT" }}<br><br>{{ now | date:"D d M Y" }}<br><br>{{ now | date:"D d M Y H:i" }}<br><br>{{ now | date:"c" }}<br><br>{{ now | date:"r" }}<br><br>
</p></body>
</html>

【代碼分析】

使用了不帶參數的date過濾器。

使用了帶參數"SHORT_DATE_FORMAT"的date過濾器。

使用了帶參數"D d M Y"的date過濾器。

使用了帶參數"D d M Y H:i"的date過濾器。

使用了帶參數"c"的date過濾器。

使用了帶參數"r"的date過濾器。

【訪問驗證】

變量在經過處理后,在頁面中顯示了不同格式的日期和時間。
在這里插入圖片描述


8.dictsort過濾器

該過濾器會接受一個包含字典元素的列表,并返回按參數中給出的鍵進行排序后的列表。

文件路徑【TmplSite/gramapp/views.py】

from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date# Create your views here.def index(request):return HttpResponse("Hello, Django! You're at the gramapp index.")def filters(request):context = {}context['title'] = "Django Template Grammar"context['filters'] = "filters"context['dict_sort'] = [{'name': 'king', 'age': 39},{'name': 'tina', 'age': 25},{'name': 'cici', 'age': 12},]template = loader.get_template('gramapp/filters.html')return HttpResponse(template.render(context, request))

【代碼分析】

在變量context中添加了一個屬性dict_sort,并賦值為一個字典類型的對象。

文件路徑【TmplSite/gramapp/templates/gramapp/filters.html】

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/><title>{{ title }}</title>
</head>
<body><p class="middle">Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">filters - dictsort:<br><br>original dict:<br>{{ dict_sort }}<br><br><br>dictsort by 'name':<br>{{ dict_sort | dictsort:"name" }}<br><br><br>dictsort by 'age':<br>{{ dict_sort | dictsort:"age" }}<br><br><br>
</p></body>
</html>

【代碼分析】

輸出了原始字典類型變量dict_sort的內容。

通過dict_sort過濾器(參數定義為“name”)對字典類型變量dict_sort進行了過濾操作,表示對變量dict_sort按照鍵(name)重新進行排序。

通過dict_sort過濾器(參數定義為“age”)對字典類型變量dict_sort進行了過濾操作,表示對變量dict_sort按照鍵(age)重新進行排序。

【訪問驗證】

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77518.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77518.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77518.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

make學習三:書寫規則

系列文章目錄 Make學習一&#xff1a;make初探 Make學習二&#xff1a;makefile組成要素 文章目錄 系列文章目錄前言默認目標規則語法order-only prerequisites文件名中的通配符偽目標 Phony Targets沒有 Prerequisites 和 recipe內建特殊目標名一個目標多條規則或多個目標共…

網絡安全技能大賽B模塊賽題解析Server12環境

已知靶機存在?站系統&#xff0c;使?Nmap?具掃描靶機端?&#xff0c;并將?站服務的端?號作為Flag &#xff08;形式&#xff1a;Flag字符串&#xff09;值提交 使用nmap掃描目標靶機網站服務的端口號為8089 Falg&#xff1a;8089 訪問?站/admin/pinglun.asp??&#…

1、Linux操作系統下,ubuntu22.04版本切換中英文界面

切換中英文界面的方法很多&#xff0c;我也是按照一個能用的方法弄過來并且記錄&#xff0c; 1.如果剛開始使用Ubuntu環境&#xff0c;桌面的語言環境為英文&#xff0c;需要安裝中文簡體的字體包 打開桌面終端&#xff0c;輸入 sudo apt install language-pack-zh-hans lan…

SmolVLM2: The Smollest Video Model Ever(六)

繼續微調 微調視頻的代碼如下&#xff1a; # 此Python文件用于對SmolVLM2進行視頻字幕任務的微調 # 導入所需的庫 import os os.environ["CUDA_VISIBLE_DEVICES"] "1" import torch from peft import LoraConfig, prepare_model_for_kbit_training, get…

Spring Boot安裝指南

&#x1f516; Spring Boot安裝指南 &#x1f331; Spring Boot支持兩種使用方式&#xff1a; 1?? 可作為常規Java開發工具使用 2?? 可作為命令行工具安裝 ?? 安裝前提&#xff1a; &#x1f4cc; 系統需安裝 Java SDK 17 或更高版本 &#x1f50d; 建議先運行檢查命令…

數據結構(七)---鏈式棧

#### 鏈式棧實現 ##### linkstack.h #ifndef _LINKSTACK_H #define _LINKSTACK_H // 引入相關的庫文件 #include <stdio.h> #include <stdlib.h> #include <string.h> // 定義元素類型的別名 typedef int DATA; //定義鏈式棧節點 typedef struct node { …

【Spring Boot】Maven中引入 springboot 相關依賴的方式

文章目錄 Maven中引入 springboot 相關依賴的方式1. 不使用版本管理&#xff08;不推薦&#xff09;2、使用版本管理&#xff08;推薦&#xff09;2.1 繼承 spring-boot-starter-parent2.2 使用 spring-boot-dependencies 自定義父工程2.3引入 spring-framework-bom Maven中引…

DataStreamAPI實踐原理——快速上手

引入 通過編程模型&#xff0c;我們知道Flink的編程模型提供了多層級的抽象&#xff0c;越上層的API&#xff0c;其描述性和可閱讀性越強&#xff0c;越下層API&#xff0c;其靈活度高、表達力越強&#xff0c;多數時候上層API能做到的事情&#xff0c;下層API也能做到&#x…

WPF 圖片文本按鈕 自定義按鈕

效果 上面圖片,下面文本 樣式 <!-- 圖片文本按鈕樣式 --> <Style x:Key="ImageTextButtonStyle" TargetType="Button"><Setter Property="Background" Value="Transparent"/><Setter Property="BorderTh…

驅動開發硬核特訓 · Day 22(上篇): 電源管理體系完整梳理:I2C、Regulator、PMIC與Power-Domain框架

&#x1f4d8; 一、電源子系統總覽 在現代Linux內核中&#xff0c;電源管理不僅是系統穩定性的保障&#xff0c;也是實現高效能與低功耗運行的核心機制。 系統中涉及電源管理的關鍵子系統包括&#xff1a; I2C子系統&#xff1a;硬件通信基礎Regulator子系統&#xff1a;電源…

設計模式全解析:23種經典設計模式及其應用

創建型模式 1. 單例模式&#xff08;Singleton Pattern&#xff09; 核心思想&#xff1a;確保一個類只有一個實例&#xff0c;并提供一個全局訪問點。適用場景&#xff1a;需要共享資源的場景&#xff0c;如配置管理、日志記錄等。 public class Singleton {// 靜態變量保存…

力扣熱題100題解(c++)—矩陣

73.矩陣置零 給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 int m matrix.size(); // 行數int n matrix[0].size(); // 列數bool firstRowZero false; // 標記第一行是否包含 0bool f…

本地部署DeepSeek-R1(Dify升級最新版本、新增插件功能、過濾推理思考過程)

下載最新版本Dify Dify1.0版本之前不支持插件功能&#xff0c;先升級DIfy 下載最新版本&#xff0c;目前1.0.1 Git地址&#xff1a;https://github.com/langgenius/dify/releases/tag/1.0.1 我這里下載到老版本同一個目錄并解壓 拷貝老數據 需先停用老版本Dify PS D:\D…

PostSwigger Web 安全學習:CSRF漏洞3

CSRF 漏洞學習網站&#xff1a;What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy CSRF Token 基本原理 CSRF Token 是服務端生成的唯一、隨機且不可預測的字符串&#xff0c;用于驗證客戶端合法校驗。 作用&#xff1a;防止攻擊…

用 Nodemon 解決 npm run serve 頻繁重啟服務

Nodemon 是一個基于 Node.js 構建的開發工具&#xff0c;專為幫助開發者自動監控項目文件的更改而設計。每當文件發生變更時&#xff0c;Nodemon 會自動重啟 Node.js 服務器&#xff0c;無需手動停止并重啟。這對于提升開發速度、減少人工操作非常有幫助&#xff0c;尤其適用于…

django admin 中更新表數據 之后再將數據返回管理界面

在Django中&#xff0c;更新數據庫中的數據并將其重新顯示在Django Admin界面上通常涉及到幾個步驟。這里我將詳細說明如何在Django Admin中更新表數據&#xff0c;并確保更新后的數據能夠立即在管理界面上顯示。 定義模型 首先&#xff0c;確保你的模型&#xff08;Model&…

真.從“零”搞 VSCode+STM32CubeMx+C <1>構建

目錄 前言 準備工作 創建STM32CubeMx項目 VSCode導入項目&配置 構建錯誤調試 后記 前言 去年10月開始接觸單片機&#xff0c;一直在用樹莓派的Pico&#xff0c;之前一直用Micropython&#xff0c;玩的不亦樂乎&#xff0c;試錯階段優勢明顯&#xff0c;很快就能鼓搗一…

C語言學習之結構體

在C語言中&#xff0c;我們已經學了好幾種類型的數據。比如整型int、char、short等&#xff0c;浮點型double、float等。但是這些都是基本數據類型&#xff0c;而這些數據類型應用在實際編程里顯然是不夠用的。比如我們沒有辦法用一旦數據類型來定義一個”人“的屬性。因此這里…

架構-計算機系統基礎

計算機系統基礎 一、計算機系統組成 &#xff08;一&#xff09;計算機系統層次結構 硬件組成 主機&#xff1a;包含CPU&#xff08;運算器控制器&#xff09;、主存儲器&#xff08;內存&#xff09;。外設&#xff1a;輸入設備、輸出設備、輔助存儲器&#xff08;外存&…

【計算機網絡性能優化】從基礎理論到實戰調優

目錄 前言技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解核心作用講解關鍵技術模塊說明技術選型對比 二、實戰演示環境配置要求核心代碼實現案例1&#xff1a;iPerf3帶寬測試案例2&#xff1a;TCP窗口優化案例3&#xff1a;QoS流量整形 運行…