引言:
前面講過了Django中使用模板變量。使用很簡(jiǎn)單,那么有沒有什么關(guān)于模板變量的騷操作呢?
答案是肯定有的,這就是本文要講的——過濾器!
1.過濾器
(1)純干貨講解:
作用: 對(duì)變量進(jìn)行過濾。在真正渲染出來之前,過濾器會(huì)根據(jù)功能處理好變量,然后得出結(jié)果后再替換掉原來的變量展示出來。
- 語法:{{ fruits|lower }}
- 管道符號(hào)進(jìn)行鏈?zhǔn)秸{(diào)用(可以理解為嵌套使用?。?,比如實(shí)現(xiàn)一個(gè)功能,先把所有字符變成小寫,再把第一個(gè)字符轉(zhuǎn)換成大寫。
- 語法:{{fruits|lower|capfirst}}
- 使用參數(shù):過濾器可以使用參數(shù),在過濾器名稱后面使用冒號(hào),加上雙引號(hào),雙引號(hào)里面再加上參數(shù),比如要把一個(gè)字符串中所有的空格去掉,則可以使用cut過濾器——語法: {{fruits|cut:" "}}
- 注意:使用參數(shù)的時(shí)候,冒號(hào)和參數(shù)之間不能有任何空格,一定要緊挨著!
(2)Django中實(shí)戰(zhàn)使用——常用的過濾器:
①項(xiàng)目目錄下的views.py文件:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
from datetime import datetime
def index(request):
test="THIS IS A LIST!"
list=["A","B","C","D","E"]
data={
'test':test,
'xx':'',
'num1':1,
'num2':2,
'list':list,
'now':datetime.now(),
'html':'h1>hello django!!!/h1>',
'float':3.1415926
}
return render(request, "index.html", data)
②項(xiàng)目目錄下templates模板文件夾下的模板文件index.html:
!DOCTYPE html>
html lang="en">
head>
meta charset="UTF-8">
title>測(cè)試!/title>
/head>
body>
{#沒做處理的變量:#}
{{ test }}br>
{#設(shè)置了默認(rèn)值的變量 在這個(gè)值被django認(rèn)為是False的時(shí)候會(huì)使用此默認(rèn)值。比如:空字符串,None。#}
{{ xx|default:'xxxxx' }}br>
{#設(shè)置了只有為None時(shí)才使用默認(rèn)值的變量#}
{{ xx|default_if_none:'aaaaa'}}br>
{#變?yōu)樾懞蟮淖兞?}
{{ test|lower }}br>
{#先變?yōu)樾懺賹⑹鬃帜复髮懞蟮淖兞?}
{{ test|lower|capfirst }}br>
{#兩個(gè)數(shù)字變量相加 add:字符串相加,數(shù)字相加,列表相加,如果失敗,將會(huì)返回一個(gè)空字符串#}
{{ num1|add:num2 }}br>
{#兩個(gè)字符串變量相加#}
{{ test|add:xx }}br>
{#列表變量的第一個(gè)元素#}
{{ list|first }}br>
{#列表變量的最后一個(gè)元素#}
{{ list|last }}br>
{#默認(rèn)的data日期時(shí)間格式#}
{{ now|date }}br>
{#默認(rèn)的time時(shí)間格式#}
{{ now|time }}br>
{#這是data過濾器的年月日24小時(shí)制時(shí)間格式#}
{{ now|date:'Y/m/d/H:i:s' }}br>
{#這是time過濾器的時(shí)分秒12小時(shí)制時(shí)間格式#}
{{ now|time:'h:i:s' }}br>
{#這是字符串的join方法 跟python中join一樣的用法#}
{{ list|join:'oooo' }}br>
{#這是字符串的長(zhǎng)度方法#}
{{ test|length }}br>
{#這是列表的長(zhǎng)度是否為4#}
{{ list|length_is:4 }}br>
{#下面這倆有xxx.html類型的,針對(duì)html,截?cái)鄻?biāo)簽中的字符,而不會(huì)截?cái)鄻?biāo)簽#}
{#這是字符串只顯示4個(gè)字符,其余省略(但是占3位)#}
{{ test|truncatechars:7 }}br>
{#這是字符串只顯示2個(gè)單詞,其余省略(不占位)#}
{{ test|truncatewords:2 }}br>
{#這是字符串的切片#}
{{ test|slice:'1:4' }}br>
{#這是列表的切片#}
{{ list|slice:'2' }}br>
{#這是含html標(biāo)簽的字符串#}
{{ html }}br>
{#這是去掉字符串中的html標(biāo)簽#}
{{ html|striptags }}br>
{#這是關(guān)掉自動(dòng)轉(zhuǎn)義,使字符串中html標(biāo)簽生效#}
{{ html|safe }}br>
{#這是沒做處理的小數(shù)#}
{{ float }}br>
{#這是保留了一位小數(shù)#}
{{ float|floatformat }}br>
{#這是保留了兩位小數(shù)#}
{{ float|floatformat:'2' }}
/body>
/html>
③效果展示:
![](/d/20211017/85a2b692fe229cdbfa5b91b475c6e1f2.gif)
date和time過濾器格式:
![](/d/20211017/941fbbbade3974306397aca3d74de664.gif)
拓展——簡(jiǎn)介自動(dòng)轉(zhuǎn)義:
什么是自動(dòng)轉(zhuǎn)義?
自動(dòng)轉(zhuǎn)義是將變量的一些特殊字符,比如左箭頭()、右箭頭(>)轉(zhuǎn)義成html代碼,這樣做的目的是為了處理一些不安全的變量。
:轉(zhuǎn)義成lt;
>:轉(zhuǎn)義成gt;
‘:轉(zhuǎn)義成#39;
“:轉(zhuǎn)義成quot;
:轉(zhuǎn)義成
到此這篇關(guān)于Django零基礎(chǔ)入門之常用過濾器詳解的文章就介紹到這了,更多相關(guān)Django過濾器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 詳解Django模板層過濾器和繼承的問題
- Django 模板中常用的過濾器實(shí)現(xiàn)
- python使用布隆過濾器的實(shí)現(xiàn)示例
- Python filter過濾器原理及實(shí)例應(yīng)用
- Django-rest-framework中過濾器的定制實(shí)例
- 布隆過濾器的概述及Python實(shí)現(xiàn)方法
- Python+Redis實(shí)現(xiàn)布隆過濾器