Пишем простой фильтр для 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 mysql parser payway python pyunit pyvkapi qiwi return sniffer sockets ssh ssh tunnel sublime text tdd tehtv templatetags ubuntu unittest webmoney X11 аргументы биллинг видео видеоурок видео уроки вконтакте возврат диаграмма диаграмма стека заметки инструкция комментарии композиция логические операторы мышка образование обучение операторы параметры функции парсинг переменная переменные питон платежи поток выполнения преобразование типов программирование проекты процессинг разработка разработкаразработка рекурсия сеть скрипт сниффер сокеты стек стоки тестирование тип тип данных типы урок уроки условия функция
free counters