Djangoカスタムテンプレートラベルとフィルタ

1478 ワード

1、appでtemplatetagsディレクトリを新規作成し、ディレクトリで__を新規作成するinit__.pyファイル名の空のファイル.
2、カスタムフィルタtest_の作成filter.py
 
#!/usr/bin/env python
#coding:utf-8

from django import template
from utils.timebefore import timebefore
register = template.Library()
def test_filter(value,arg=None):
    '''     2 ''' 
    return value * 2
register.filter('test', test_filter) 

 
もちろんfilter('test',test_filter)は装飾器で代用できます
@register.filter(name='cut')
def cut(value, arg):
    return value.replace(arg, '')

@register.filter
def lower(value):
    return value.lower()

カスタムフィルタ名がない場合、Djangoは関数名をフィルタの名前として使用します.
 
3、テンプレートの先頭にフィルタ{%load test_filter%}をロードする
4、テンプレートにフィルターを使う:{{2|test}}
 
カスタムラベル:
ラベルの定義はフィルタよりも複雑で、カスタムラベルはテンプレートシステムにコンパイルとレンダリング方法を教える必要があります.
 
参照先:
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
http://stackoverflow.com/questions/8000022/django-template-how-to-lookup-a-dictionary-value-with-a-variable