Пишем простой фильтр для Django

Задача:

Вырезать текст до определённого тега. Например, надо вырезать описание из текста в записе блога.

Решение:

Надо создать  в  приложении папку templatetags и  в ней создать файлы __init__.py и cut_text.py. В cut_text.py впишем:


from django import template
register = template.Library()

# зарегестрируем наш фильтр
@register.filter(name='cut')
def cut(text):
    """
    Cut text
    @return text before [cut] tag
    >>> cut("desctiption[cut]text")
    'desctiption'
    >>> cut("description text")
    'description text'
    """
    return text.split('[cut]')[0]

Django автоматически подключает модуль templatetags, так что нам осталось загрузить модуль cut_text.py в наш шаблон. Выглядет это так:



{% load cut_text %}

{{ post.text|cut }} 

На последок вы можете запустить тест нашей функции cut. Для этого добавим в test.py нашего приложения:


from templatetags.cut_text import cut
__test__ = {"cut": cut}

Далее надо зайти в папку с проектом и запустить команду python manage.py test blog  (у меня это blog)

ranux 14.02.11 15:32 #
Буду рад ответить на возникшие вопросы :)
Логин Регистрация

Логин

Облако тэгов

count count all django django admin feedparser libxml2dom linux parser python pyunit pyvkapi return sniffer sockets sublime text tdd templatetags unittest X11 аргументы видео видеоурок видео уроки вконтакте возврат диаграмма диаграмма стека заметки инструкция комментарии композиция логические операторы мышка образование обучение операторы параметры функции парсинг переменная переменные питон поток выполнения преобразование типов программирование разработка разработкаразработка рекурсия сеть скрипт сниффер сокеты стек стоки тестирование тип тип данных типы урок условия функция
free counters