Найти - Пользователи
Полная версия: Django, ifequal и проверка переменной на равенство None.
Начало » Django » Django, ifequal и проверка переменной на равенство None.
1
Syao
Всем привет.
В общем играюсь с 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" }}">Архив за следующий месяц. &gt;&gt;</a>
{% endifnotequal %}
Вне зависимости от значения next_month всегда выполняется блок else, даже когда next_month == None.
{% ifequal next_month|lower "none" %}                                                                                                                
Архив за следующий месяц. &gt;&gt;
{% else %}
<a href="../{{ next_month|date:"m" }}">Архив за следующий месяц. &gt;&gt;</a>
{% endifnotequal %}
А вот такой вариант выполняется уже нормально.

Вопрос - где собака зарыта?
regall
Вот здесь:
>>> str(None)
'None'
>>>
Syao
Можете объяснить поподробнее?
Syao
lorien и regall, спасибо.

P.S. что None != “None” понятно, но все равно терзают вопросы из-за работающего нормально второго примера из моего первого поста…:)
regall
Syao
P.S. что None != “None” понятно, но все равно терзают вопросы из-за работающего нормально второго примера из моего первого поста…
Фильтр lower, насколько я помню сначала преобразует входящее значение в строку, ну и соответственно, возвращает строку, потому и работает.
Ferroman
Во втором примере фильтр lower приводит тип None в строковый
>>> b = None
>>> str(b).lower()
'none'
>>>
Syao
def lower(value):
"""Converts a string into all lowercase."""
return value.lower()
lower.is_safe = True
lower = stringfilter(lower)
Все, дошло. stringfilter преобразует аргумент в строку прежде чем передать в функцию.

Всем спасибо за помощь.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB