Форум сайта python.su
Всем привет.
В общем играюсь с Django, использую в качестве вьюхи django.views.generic.date_based.archive_month, она передает в шаблон переменную next_month содержащую datetime объект указывающий месяц. Если месяц в будующем, то next_month == None
Теперь проблемма:
{% ifequal next_month "None" %}
Архив за следующий месяц. >>
{% else %}
<a href="../{{ next_month|date:"m" }}">Архив за следующий месяц. >></a>
{% endifnotequal %}
{% ifequal next_month|lower "none" %}
Архив за следующий месяц. >>
{% else %}
<a href="../{{ next_month|date:"m" }}">Архив за следующий месяц. >></a>
{% endifnotequal %}
Офлайн
Вот здесь:
>>> str(None)
'None'
>>>
Офлайн
Можете объяснить поподробнее?
Офлайн
lorien и regall, спасибо.
P.S. что None != “None” понятно, но все равно терзают вопросы из-за работающего нормально второго примера из моего первого поста…:)
Офлайн
SyaoФильтр lower, насколько я помню сначала преобразует входящее значение в строку, ну и соответственно, возвращает строку, потому и работает.
P.S. что None != “None” понятно, но все равно терзают вопросы из-за работающего нормально второго примера из моего первого поста…
Офлайн
Во втором примере фильтр lower приводит тип None в строковый
>>> b = None
>>> str(b).lower()
'none'
>>>
Отредактировано (Апрель 16, 2010 17:49:15)
Офлайн
def lower(value):
"""Converts a string into all lowercase."""
return value.lower()
lower.is_safe = True
lower = stringfilter(lower)
Отредактировано (Апрель 17, 2010 00:53:39)
Офлайн