Пишем простой фильтр для 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)
Буду рад ответить на возникшие вопросы :)
Логин
Регистрация

