Python Django-在';如果';陈述

Python Django-在';如果';陈述,python,django,Python,Django,我有一个非常有想象力的模型叫做“model”,其中有一个字段“datefinish”;用户可以在此处以MM/DD/YYYY格式输入日期。在我的模板中,当所述模型具有与当前日期相等的datefinish(日期)时,我需要显示一些文本 HTML: {%if model.datefinish==datetime.today%} 今天结束 {%else%} 今天还没有结束 {%endif%} 如何才能做到这一点? 我用的是Django 1.10…谢谢 不要在模板中执行此操作。在模型上编写一个方法(例如

我有一个非常有想象力的模型叫做“
model
”,其中有一个字段“
datefinish
”;用户可以在此处以MM/DD/YYYY格式输入日期。在我的模板中,当所述模型具有与当前日期相等的
datefinish
(日期)时,我需要显示一些文本

HTML:

{%if model.datefinish==datetime.today%}
今天结束
{%else%}
今天还没有结束
{%endif%}
如何才能做到这一点?
我用的是Django 1.10…谢谢

不要在模板中执行此操作。在模型上编写一个方法(例如称为“今天完成”),该方法执行此检查并返回布尔值,然后在模板中调用该方法。

不要在模板中执行此操作。在模型上编写一个方法(例如称为“今天完成”),该方法执行此检查并返回布尔值,然后在模板中调用它。

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

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

{% if is_today %}
   <h5>It ends today</h5>
{% else %}
   <h5>It does not end today</h5>
{% endif %}
{%if is_today%}
今天结束
{%else%}
今天还没有结束
{%endif%}

还有,但看起来确实有点过于复杂。

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

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

{% if is_today %}
   <h5>It ends today</h5>
{% else %}
   <h5>It does not end today</h5>
{% endif %}
{%if is_today%}
今天结束
{%else%}
今天还没有结束
{%endif%}

还有,但看起来确实有点过于复杂。

根据Daniel的建议选择模型选项,我更喜欢这样,因为无论何时加载该模型,您都可以使用它

在模式中:

@property
def is_today(self):
  return self.datefinish == datetime.today().date()
这假设“datefinish”是一个DateField,而不是DateTimeField,对于DateTimeField,您可以执行
self.datefinish.date()==…

您还可以查看它是否在某个范围内,即

return self.start_date <= datetime.today().date() <= self.end_date
然后在模板中可以执行以下操作:

{% if model.datetime_field|is_today %}

过滤器可以根据Daniel的建议处理DateField和DateTimeField

模型选项,我更喜欢这样,因为无论何时加载该模型,您都可以使用它

在模式中:

@property
def is_today(self):
  return self.datefinish == datetime.today().date()
这假设“datefinish”是一个DateField,而不是DateTimeField,对于DateTimeField,您可以执行
self.datefinish.date()==…

您还可以查看它是否在某个范围内,即

return self.start_date <= datetime.today().date() <= self.end_date
然后在模板中可以执行以下操作:

{% if model.datetime_field|is_today %}

过滤器可以处理DateField和DateTimeField

你的标题很特别:你绝对不是在“设置”一个
if
语句等于某个内容。@khelwood表示歉意,不知道如何使用它-有什么建议吗?看起来更像是在
if
语句中检查日期时间。@khelwood更改了它,谢谢!你的标题很奇怪:你绝对不是在“设置”一个
if
语句等于某个东西。@khelwood道歉,不知道该怎么说-有什么建议吗?看起来更像是在检查
if
语句中的日期时间。@khelwood更改了它,谢谢!或者添加一个templatetag@bodolsog如果您经常想在多个模型上检查这一点或添加templatetag@bodolsog如果您经常想在多个模型+1上检查此问题,建议也是很好的,但这会导致“非类型”对象没有属性“日期”错误…即使它是DateTimeField-有什么想法吗?可以将我的代码修复为测试非类型时,数据库中的datetimefield可能设置为null。换句话说:上面的代码假设您总是传递一个有效的对象+1,但这会导致“非类型”对象没有属性“日期”错误…即使它是datetimefield-有什么想法吗?可以修复我的代码以测试非类型,数据库中的datetimefield可能设置为null。换句话说,上面的代码假设您始终传递有效对象