Django自定義過濾器和自定義標籤

2022-02-15 02:40:11 字數 1394 閱讀 9906

3、在模板下建立任意名稱的.py檔案;

4、在剛剛建立的.py檔案中定製過濾器

from django.template import

library

register =library()

@register.filter(name='

rule')

# 最多包含兩個引數

defrule(value, before):

#將before替換為~

return value.replace(before, '

~')

5、編輯檢視函式時,將value傳遞給模板檔案

def

index(request):

return render(request, '

one.html

', )

6、在模板頁面中使用自定義過濾器

<

p style

="color: red"

>

<

b>

}b>

p>

自定義標籤跟自定義過濾器的步驟一樣,只是定義的形式有點不一樣(自定義標籤,返回當前格式化時間)

#

extra_tags.py

#自定義標籤,格式化返回當前時間

@register.tag(name='

current_time')

#解析器

def do_current_time(parse, token): #

parse解析器物件,token被解析的物件,包含標籤的名字和格式化的格式

try:

tag_name, format_string =token.split_contents()

except

:

raise template.templatesyntaxerror('

syntax')

return currentnode(format_string[1:-1]) #

傳入模板中的節點類

import

datetime

class

currentnode(template.node):

def__init__

(self, format):

self.format_string =str(format)

#把當前時間格式化後返回

defrender(self, context):

now =datetime.datetime.now()

return now.strftime(self.format_string)

在模板中使用

Django自定義過濾器

django中提供了很多的過濾器和標籤,具體可見django官網,例如 upper 化為大寫字母 lower 化為小寫字母 autoescape 自動轉義 block 模板繼承 csrf token 防止跨站偽造請求 extends 模板繼承 filter 過濾器 等 內建的過濾器雖然好用,但是我們...

Django自定義過濾器

為什麼要自定義過濾器?django中雖然已經內建了很多過濾器,但是並不能滿足我們的日常開發,所以我們需要自定義過濾器。在一切配置好了之後,然後在article中新建乙個名為templatetags的package。注意 必須是乙個包,並且包的名字也必須為templatetags package和資料...

django 自定義過濾器

然後在extratags.py檔案中新增自定義的過濾器 from django import template register template.library register.filter name cut 過濾器在模板中使用時的name def mycut value,arg 把傳遞過來的引...