1

こんにちは、django テンプレート ファイルで毎月 10 日を確認する必要があります。これを強調して確認する方法を教えてください。毎月 10 日より前にデータを表示し、10 日以降は非表示にする必要があります。

4

1 に答える 1

5

理解しておくべきことがいくつかあります。

  1. Django のテンプレート言語は、「実際の」プログラミングを中心に設計されているわけではありません。本質的には、文字列を構築しているだけです。
  2. 実際の「式」はサポートしていません。
  3. …しかし、基本的な条件文とループはサポートしています。
  4. したがって、ある値が別の値と等しいか大きいか小さいかは確認できますが、それ以上のことはできません。
  5. フィルターまたはカスタム テンプレート タグを使用しない限り。
  6. フィルターは値をあるものから別のものに変換できます。
  7. テンプレートタグは、この質問の範囲を超えて、より複雑なことを行うことができます.
  8. フィルターまたはカスタム テンプレート タグのいずれかを使用して目的の場所に到達できますが、それらはやり過ぎです。

したがって、私の意見では、これを行う最も簡単な方法は次のとおりです。

  1. ビューで現在の日付の日を計算します。
  2. その値をテンプレートに渡します。
  3. 数値 10 に対して、渡された値に対して単純な「より大きい場合」チェックを実行します。

したがって、ビューは次のようになります。

def sample_view(request, *args, **kwargs):
    from datetime import date
    current_date = date.today()
    current_day = int(current_date.day) # force a cast to an int, just to be explicit
    return render_to_response("template", {'day_of_the_month': current_day })

このテンプレートでは、次のようにします。

{% if day_of_the_month > 10 %}
    <!-- Stuff to show after the 10th -->
{% else %}
    <!-- Stuff to show before the 10th -->
{% endif %}

これにより、セキュリティ上の理由から日付に基づいて非表示にしている可能性のあるものがテンプレートに公開されます。if/then チェックに基づいて、テンプレートで安全なものを非表示にしないでください。

追加のチェックを行う必要がある場合は、その日に具体的に渡すのではなく、単に を渡し、数字の 10 に対してcurrent_dateチェックすることができます。current_date.dayあまり明示的ではありませんが、より一般的で柔軟です。

于 2013-03-14T07:18:26.107 に答える