среда, 6 марта 2013 г.

Djnago Создание собственных шаблонных фильтров

/templatetags/filters.py

from django import template

register = template.Library()


# Или традиционно можно записать так:

from django.template import Library

register = Library()


# Регистрация фильтров.

register.filter('cut', cut) # 1 - имя фильтра, 2 - сама функция фильтра.
register.filter('lower', lower) # 1 - имя фильтра, 2 - сама функция фильтра.


# Функция фильтра.

def cut(value, arg): # 1 - значение переменной в шаблоне, 2 - параметр самого фильтра.
    "Удаляет все значения аргумента arg из строки value."
    return value.replace(arg, '')

# Пример использования нашего фильтра.

# {{ my_var|cut:'0' }}



# Функция фильтра.

def lower(value): # 1 - значение переменной в шаблоне, 2 - параметра самого фильтра нет.
    "Преобразовывает регистр строки в строчный."
    return value.lower()

# Пример использования нашего фильтра.

# {{ my_var|lower }}


# Альтернативный вариант регистрации фильтров.

@register.filter(name='cut')
def cut(value, arg):
    return value.replace(arg, '')

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

# Если вы опустите аргумент name в @register.filter, как это сделано во втором примере, то Django будет использовать имя функции в качестве имени фильтра.



# Полный пример шаблонной библиотеки фильтров.

/templatetags/filters.py

from django import template

register = template.Library()

@register.filter(name='cut')
def cut(value, arg):
    return value.replace(arg, '')

@register.filter(name='lower')
def lower(value):
    return value.lower()

Комментариев нет:

Отправить комментарий