自定義模板過濾器及標籤

自定義模板過濾器及標籤html

1.自定義模板過濾器python

  在哪裏定義,代碼寫在哪裏?django

代碼佈局:app

  app目錄下的名爲templatetags的文件夾,必須叫這個名字。這個文件夾必須是一個python的包,這個文件夾下必定有一個__init__.py的文件。函數

  自定義的模板標籤或模板過濾器就放在這個包下的python模塊中(python腳本文件)。佈局

  app必須在settings中被註冊。spa

定義:自定義過濾器就是python函數,它有一個或兩個參數。code

  第一個參數就是那個傳進來的模板變量orm

  第二個參數是一個普通函數,能夠是默認參數,也能夠不要這個參數。htm

註冊:

#自定義模板過濾器
from django.template import Library
register=Library()   #必須用register這個變量名
def my_male(value):
    """
    轉換性別的過濾器
    :param value:
    :return:
    """
    map={
        0:'',
        1:''
    }
    return map[value]
register.filter(my_male)

在模板中使用

1.load標籤,引入自定義的過濾器模塊,也就是templatetags包裏的那個python文件

{% load teacher_filters %}

  ......

<td>{{student.sex|my_male}}</td>

  注意:新建了templatetags文件夾 要重啓一下django服務

2個參數

命名

 2.自定義模板標籤:

  能夠幹任何事情

標籤類型:

  1.簡單標籤:實現更復雜的邏輯,也是個普通的python函數。

  django.template.Library.simple_tag()

  接收許多參數,返回值是你想要顯示的數據

  建立註冊:

 

from django.template import Library
from datetime import datetime
register=Library()
def current_time(format_str='%Y-%m-%d %H:%M:%S'):
    #輸出當前時間
    return datetime.now().strftime(format_str)

#註冊
register.simple_tag(current_time,name='current')

 

  使用:

{% current format_str %} 跟普通函數的傳參數同樣,字符創,模板變量,關鍵字變量

使用上下文變量:

在自定義標籤中,使用當前模板中的上下文變量context

 

def current_time(context,format_str='%Y-%m-%d %H:%M:%S'):
    #輸出當前時間
    print(context)
    return datetime.now().strftime(format_str)

#註冊
register.simple_tag(current_time,name='current',takes_context=True)

  

  2.包含標籤:

  經過渲染另外一個模板展現數據

  定義:

 

#註冊
@register.inclusion_tag('teacher/show_list.html')
def show_list(list_data):
    #一個嵌套標籤,實現展現列表數據
    return{'ls':list_data}
相關文章
相關標籤/搜索