Django正在检查“if”状态中的datetime

2024-10-03 09:10:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常有想象力的模型,名为“model”,其中有一个字段“datefinish”;用户可以在这里以MM/DD/YYYY格式输入日期。在我的模板中,我需要一些文本,当该模型的datefinish(日期)等于当前日期时显示。在

HTML格式:

{% if model.datefinish == datetime.today %}
   <h5>It ends today</h5>
{% else %}
   <h5>It does not end today</h5>
{% endif %}

怎样才能做到这一点? 我用的是django1.10…谢谢!在


Tags: 用户模型文本模板todaymodelhtml格式
3条回答

根据Daniel的建议选择model选项,我希望您在加载该模型时始终可以使用它

在模式中:

@property
def is_today(self):
  return self.datefinish == datetime.today().date()

这假设'datefinish'是一个DateField,而不是一个DateTimeField,对于DateTimeField您应该这样做self.datefinish.date() == ...

你也可以看到它是否在一个范围内,即

^{pr2}$

如果你在一个模型里有两个约会。在

或创建模板标记,如:

@register.filter
def is_today(dt):
  if isinstance(dt, datetime):
    return dt.date() == datetime.today().date():
  if isinstance(dt, date):
    return dt == datetime.today().date():

然后在模板中

{% if model.datetime_field|is_today %}

过滤器可以处理DateField和DateTimeField

我将避免使用逻辑重载模板,并将此检查放入视图中(或作为Daniel建议的模型属性):

is_today = model.datefinish == datetime.today()

return render_to_response('template.html', {'is_today': is_today})

然后,在模板中只需检查上下文中传递的变量:

^{pr2}$

还有this option,但看起来有点过于复杂。在

不要在模板中这样做。在模型上编写一个方法,例如finishes_today,它进行检查并返回一个布尔值,然后在模板中调用它。在

相关问题 更多 >