Джанго Ифекуал Натуралдай

Я не уверен почему, но это условие никогда не оценит True для меня. Я кормлю его datetime.today() в файле URL. Я что-то пропустил?

Шаблон:

{% load humanize %}

{{ entry.date|naturalday }}  {# Evals to "today" #}

{% ifequal entry.date|naturalday "today" %}
    True
    {{ entry.date|date:"fA"|lower }} {{ entry.date|naturalday|title }}
{% else %}
    False
    {{ entry.date|naturalday|title }}
{% endifequal %}

1 ответ

Решение

Я только что проверил это под Django 1.1.1, и он прекрасно работает для меня.

Какую версию Django вы используете?

Однако есть несколько других проблем, которые могут вызывать у вас проблемы:

  1. Я также заметил, что в вашем вопросе у вас есть {% load humaize %}, который содержит опечатку (должен быть {% load humanize %}). Я не уверен, что это в вашем реальном коде или просто в вашем вопросе.

  2. Если вы действительно используете datetime.today() в вашем urls.py, как вы говорите, имейте в виду, что это может вызвать проблемы, так как значение будет рассчитываться только один раз, когда extra_context Сначала создается словарь (поскольку значение "сегодня" будет вычислено только один раз). Это может означать, что код будет работать в первый день работы приложения, а затем завершится ошибкой во второй день. Скорее всего, вы не заметите этого, пока не развернете среду, в которой приложение работает без перезапуска.

    Если вы хотите, чтобы это действительно было "сегодня", просто передайте функцию datetime.today скорее, чем datetime.today(), Таким образом, шаблон будет вызывать его при каждом рендере.

Другие вопросы по тегам