Her*_*aaf 43 python django django-templates
我想将日期与Django中的当前日期进行比较,最好是在模板中,但在渲染模板之前也可以这样做.如果日期已经过去,我想说"过去",如果是将来,我想给出日期.
我希望有人可以这样做:
{% if listing.date <= now %}
In the past
{% else %}
{{ listing.date|date:"d M Y" }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
现在是今天的日期,但这不起作用.我在Django文档中找不到任何相关内容.谁能提出一些建议?
bx2*_*bx2 91
比较视图中的日期,并将类似in_the_past
(boolean)的内容传递给extra_context.
或者更好地将其作为属性添加到模型中.
from datetime import date
@property
def is_past_due(self):
return date.today() > self.date
Run Code Online (Sandbox Code Playgroud)
然后在视图中:
{% if listing.is_past_due %}
In the past
{% else %}
{{ listing.date|date:"d M Y" }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
基本上模板不是IMO日期比较的地方.
Dir*_*rom 13
从Django 1.8开始,以下稍微令人反感的构造完成了这项工作:
{% now "Y-m-d" as todays_date %}
{% if todays_date < someday|date:"Y-m-d" %}
<h1>It's not too late!</h1>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
Hackish,但它避免了对自定义标记或上下文处理器的需求.
我将date_now添加到我的上下文处理器列表中.
所以在模板中有一个名为"date_now"的变量,它只是datetime.datetime.now()
在文件context_processors.py中创建一个名为date_now的上下文处理器
import datetime
def date_now(request):
return {'date_now':datetime.datetime.now()}
Run Code Online (Sandbox Code Playgroud)
在settings.py中,修改CONTEXT_PROCESSORS以包含它,就我的情况而言
app_name.context_processors.date_now
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50993 次 |
最近记录: |