Django5關於 自定義過濾器和標籤

ckxllf發表於2019-08-26

  目錄結構

  1.(建立)在主目錄下建立名為common的python包(自帶__init__檔案)。

  2.(註冊)將common註冊到setting檔案裡的APP列表中。

  3.(建立)在common目錄下建立名為templatetags的python包(自帶__init__檔案、存放自定義過濾器和標籤檔案)

  過濾器分析

  {{ var|foo:“bar” }}(變數,過濾器,引數)

  自定義過濾器就是一個帶有一個或兩個引數的Python 函式:

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

  引數的值 —— 可以有一個初始值,或者完全不要這個引數。

  註冊和使用自定義過濾器

  from django import template

  register = template.Library() # 名字是固定的,生成例項化物件

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

  1.Library.filter(“name”, func)方法需要兩個引數:

  a. 過濾器的名稱(一個字串物件)

  b. 編譯的函式 – 一個Python函式(先編寫函式,不要把函式名寫成字串)

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

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

  沒有宣告 name 引數,Django將使用函式名作為過濾器的名字。

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

  設定和使用自定義標籤

  from django import template

  register = template.Library() # 名字是固定的,生成例項化物件

  1.設定標籤

  如果需要傳參上下文引數:takes_context = True寫於裝飾器中

  簡單標籤 無錫人流醫院哪家好

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

  包含標籤(包含標籤的功能是可以透過渲染另外一個模板來顯示一些資料)

  在模板html檔案中編寫程式碼

  # 模板檔案中

  {% for i in a_list %}

  {{i}}

  {% endfor %}

  標籤.py檔案中透過呼叫

  # 標籤檔案中

  django.template.Libarary.inclusion_tag(‘模板標籤檔案路徑’)# 此句程式碼作為裝飾器

  def show_result():

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

  return {'a_list':m}

  2.使用:{% load mytags %}載入自定義標籤過濾器檔案

  直接通{% 函式名 %}使用該標籤


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2654911/,如需轉載,請註明出處,否則將追究法律責任。

相關文章