溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Django5中怎么自定義過濾器和標(biāo)簽

發(fā)布時(shí)間:2021-07-20 15:49:22 來源:億速云 閱讀:151 作者:Leah 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)Django5中怎么自定義過濾器和標(biāo)簽,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

  目錄結(jié)構(gòu)

  1.(創(chuàng)建)在主目錄下創(chuàng)建名為common的python包(自帶__init__文件)。

  2.(注冊(cè))將common注冊(cè)到setting文件里的APP列表中。

  3.(創(chuàng)建)在common目錄下創(chuàng)建名為templatetags的python包(自帶__init__文件、存放自定義過濾器和標(biāo)簽文件)

  過濾器分析

  {{ var|foo:“bar” }}(變量,過濾器,參數(shù))

  自定義過濾器就是一個(gè)帶有一個(gè)或兩個(gè)參數(shù)的Python 函數(shù):

  (輸入的)變量的值 —— 不一定是字符串形式。

  參數(shù)的值 —— 可以有一個(gè)初始值,或者完全不要這個(gè)參數(shù)。

  注冊(cè)和使用自定義過濾器

  from django import template

  register = template.Library() # 名字是固定的,生成實(shí)例化對(duì)象

  django.template.Library.filter()的使用方法

  1.Library.filter(“name”, func)方法需要兩個(gè)參數(shù):

  a. 過濾器的名稱(一個(gè)字符串對(duì)象)

  b. 編譯的函數(shù) – 一個(gè)Python函數(shù)(先編寫函數(shù),不要把函數(shù)名寫成字符串)

  2.可以把register.filter()用作裝飾器;

  @register.filter、@register.filter(“name”)

  沒有聲明 name 參數(shù),Django將使用函數(shù)名作為過濾器的名字。

  自定義過濾器的使用同正常過濾器

  設(shè)置和使用自定義標(biāo)簽

  from django import template

  register = template.Library() # 名字是固定的,生成實(shí)例化對(duì)象

  1.設(shè)置標(biāo)簽

  如果需要傳參上下文參數(shù):takes_context = True寫于裝飾器中

  簡(jiǎn)單標(biāo)簽無錫人流醫(yī)院哪家好 http://www.wxbhnkyy120.com/

  django.template.Libarary.simple_tag()# 此句作為函數(shù)裝飾器

  包含標(biāo)簽(包含標(biāo)簽的功能是可以通過渲染另外一個(gè)模板來顯示一些數(shù)據(jù))

  在模板html文件中編寫代碼

  # 模板文件中

  {% for i in a_list %}

  {{i}}

  {% endfor %}

  標(biāo)簽.py文件中通過調(diào)用

  # 標(biāo)簽文件中

  django.template.Libarary.inclusion_tag(‘模板標(biāo)簽文件路徑’)# 此句代碼作為裝飾器

  def show_result():

  m = ['a', 'b', 'c']# 此示例是不傳參的情況

  return {'a_list':m}

  2.使用:{% load mytags %}加載自定義標(biāo)簽過濾器文件

  直接通{% 函數(shù)名 %}使用該標(biāo)簽

關(guān)于Django5中怎么自定義過濾器和標(biāo)簽就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI