如何循环 django 模板中的日期时间范围
How to loop over datetime range in django templates
我想在列中从当前日期循环到 xxx 日期
我正在考虑使用这个功能:
from datetime import timedelta, date
def daterange(start_date, end_date):
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
for single_date in daterange(start_date, end_date):
print single_date.strftime("%Y/%m/%d")
但我不知道如何将它传递给 views.py
中的上下文
我想要这样的东西,但几天后:
您可以使用自定义模板标签解决:
首先创建文件结构。进入需要标签的app目录,添加这些文件:
templatetags
templatetags/init.py
templatetags/custom_tags.py
templatetags/custom_tags.py 文件:
from django import template
register = template.Library()
@register.daterange
def daterange(start_date, end_date):
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
模板部分:
{% load custom_tags%}
{%for date_out in start_date|daterange:timedelta %}
<!-- do something here with date_out -->
{% endfor %}
我有另一种方法:
只需将此函数传递给上下文 'daterange': daterange()
def daterange(start_date, end_date):
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
并在您的模板中:
{% for i in date_range %}
...
{% endfor %}
我想在列中从当前日期循环到 xxx 日期 我正在考虑使用这个功能:
from datetime import timedelta, date
def daterange(start_date, end_date):
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
for single_date in daterange(start_date, end_date):
print single_date.strftime("%Y/%m/%d")
但我不知道如何将它传递给 views.py
中的上下文我想要这样的东西,但几天后:
您可以使用自定义模板标签解决:
首先创建文件结构。进入需要标签的app目录,添加这些文件:
templatetags
templatetags/init.py
templatetags/custom_tags.py
templatetags/custom_tags.py 文件:
from django import template
register = template.Library()
@register.daterange
def daterange(start_date, end_date):
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
模板部分:
{% load custom_tags%}
{%for date_out in start_date|daterange:timedelta %}
<!-- do something here with date_out -->
{% endfor %}
我有另一种方法:
只需将此函数传递给上下文 'daterange': daterange()
def daterange(start_date, end_date):
start_date = datetime.date.today()
end_date = start_date + datetime.timedelta(days=5)
for n in range(int((end_date - start_date).days)):
yield start_date + timedelta(n)
并在您的模板中:
{% for i in date_range %}
...
{% endfor %}