1

理由はわかりませんが、この条件が True と評価されることはありません。URLファイルでdatetime.today()を供給しています。何か不足していますか?

テンプレート:

{% 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 %}
4

1 に答える 1

1

これを Django 1.1.1 でテストしたところ、問題なく動作しました。

どのバージョンの Django を実行していますか?

ただし、問題を引き起こす可能性のある他の問題がいくつかあります。

  1. また、あなたの質問に{% load humaize %}はタイプミスが含まれていることに気付きました(する必要があります{% load humanize %})。これがあなたの実際のコードにあるのか、それともあなたの質問にあるのかはわかりません。

  2. あなたが言うように、実際に を使用datetime.today()している場合は、ディクショナリが最初に作成されurls.pyたときに値が一度だけ計算されるため、これが問題を引き起こす可能性があることに注意してください(「今日」の値はextra_context一度計算されます)。これは、コードがアプリの実行初日に機能し、2 日目に失敗することを意味する可能性があります。アプリが再起動せずに一晩中実行される環境にデプロイするまで、これに気付かない可能性があります。

    本当に「今日」にしたい場合は、datetime.todayではなく関数を渡すだけですdatetime.today()。そうすれば、テンプレートは各レンダリングでそれを呼び出します。

于 2010-03-13T05:42:55.773 に答える