【问题标题】:get particular date in django template Django在 Django 模板 Django 中获取特定日期
【发布时间】:2013-03-02 08:22:02
【问题描述】:

嗨,我需要在我的 django 模板文件中检查每个月的 10 日,谁能告诉我如何检查这个 特别是我需要在每个月的 10 号之前显示一些数据,并在 10 号之后隐藏这些数据

【问题讨论】:

  • 到目前为止你做了什么?代码?

标签: python django date


【解决方案1】:

需要了解的几点:

  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 检查的模板中隐藏安全的东西。

如果你需要做额外的检查,你可以直接传入current_date,然后根据数字 10 检查current_date.day,而不是在当天专门通过。它会不那么明确,但更通用和灵活。

【讨论】:

  • 您好,我在模板中使用了变量 day_of_the_month,但它给了我像 2013 年 3 月 14 日这样的值,但我只需要像 14 这样的天值我该如何过滤这个
  • 确保您已通过 current_day 而不是 current_date。
  • 对不起,亲爱的你是对的,我传递了错误的变量,但现在可以了,非常感谢
猜你喜欢
  • 2019-11-15
  • 2018-05-31
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 2018-09-25
  • 2016-03-23
相关资源
最近更新 更多