django 自定義過濾器

2021-09-10 12:04:34 字數 1547 閱讀 1894

然後在extratags.py檔案中新增自定義的過濾器:

from django import template

register = template.library()

@register.filter(name='cut') # 過濾器在模板中使用時的name

def mycut(value, arg): # 把傳遞過來的引數arg替換為'~'

return value.replace(arg, '~')

def index(request):

return render(request, 'one.html', )

在模板檔案中使用的時候,要先導入extra_tags.py檔案:

}

編輯好urls.py檔案,啟動伺服器,在瀏覽器訪問就可以看到替換後的效果了

自定義標籤和上面的步驟一樣,只是定義的形式有所改變(自定義標籤,格式化返回當前時間):

# 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)

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

def render(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自定義過濾器函式

自定義過濾器就是乙個帶 2個引數的 python 函式。call remove var,bar defremove var,arg 移除字串中 var的 arg字串 returnvar.replace arg,過濾器函式應該總是返回一些資訊,即使出錯,也不應該丟擲異常,可以返回預設值或者空字串。不帶...