在django模板Django中获取特定日期

use*_*353 1 python django date

嗨我需要在我的django模板文件中检查每个月的第10个,有人可以告诉我如何能够在每个月的10号之前显示一些数据并在10日之后隐藏

Jac*_*edd 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 })
Run Code Online (Sandbox Code Playgroud)

在我们的模板中,我们会这样做:

{% if day_of_the_month > 10 %}
    <!-- Stuff to show after the 10th -->
{% else %}
    <!-- Stuff to show before the 10th -->
{% endif %}
Run Code Online (Sandbox Code Playgroud)

出于安全原因,这确实会根据日期向您的模板公开内容.您永远不应该基于if/then检查在模板中隐藏安全的东西.

如果你需要做额外的检查,你可以直接传入current_date,并检查current_date.day数字10,而不是在那一天特别传递.它不那么明确,但更通用和灵活.