Я хочу отображать только S1
вместо season 1
. Таким образом, мне нужно обрезать season
и поставить только 1
и добавить "S"
впереди.
<a href = "{% url 'season_detail' slug=all_episode.season.slug %}">
{{ all_episode.season}}
</a>
Как сократить слово "season"
?
Редактировать: Вот что я сделал снова
Я создал папку templatetag внутри своего приложения затем добавил в этом.py и Seasonify.py и внутри Seasonify.py я добавил
from django import template
register = template.Library()
@register.filter
def seasonify(value):
return value.replace('season', 'S')
затем внутри моего шаблона я добавил
{% load seasonify %}
and {% episode.season|seasonify %}
@Шон да. Я использую для цикла all_episode. Итак, сезон 1, 2, 3 и т. д.
Лучше всего написать настраиваемый фильтр шаблонов. Логика проста:
@register.filter
def seasonify(value):
return value.replace('season', 'S')
затем просто используйте его в своих шаблонах:
{{ all_episode.season | seasonify }}
См. Документы Джанго для получения подробной информации о том, куда поместить этот код.
привет спасибо за ответ. Я никогда раньше не использовал шаблонный фильтр. мне просто добавить это в мой views.py?
Нет, вы должны создать отдельный файл в каталоге templatetags
. Подробности смотрите по ссылке в конце моего ответа. Это несложно.
Я сделал это, как сказано в документе, но я получаю TemplateSyntaxError в / 'seasonify' не является зарегистрированной библиотекой тегов. Должен быть одним из:
@rosababy Имя каталога должно быть templatetags
, а не templatetag
. Это опечатка?
к сожалению, я поставил теги шаблонов на свою сторону
Вы перезапустили сервер разработки?
Сейчас мы прыгаем с темы на тему. Вы решили свою первоначальную проблему? Пользовательский фильтр теперь работает?
все в порядке, я решил это, используя cut несколько раз. не лучший способ, но работает
Является ли значение
all_episode.season
«сезоном 1»?