Python 如何在django模板中循环datetime范围

Python 如何在django模板中循环datetime范围,python,django,django-templates,Python,Django,Django Templates,我想在列中从当前日期循环到xxx日期 我正在考虑使用这个函数: 从日期时间导入时间增量,日期 def日期范围(开始日期、结束日期): 开始日期=datetime.date.today() 结束日期=开始日期+日期时间.timedelta(天数=5) 对于范围内的n(int((结束日期-开始日期).days)): 产量开始日期+时间增量(n) 对于日期范围中的单个日期(开始日期、结束日期): 打印单个日期.strftime(“%Y/%m/%d”) 但我不知道如何将其传递到views.py中的上下

我想在列中从当前日期循环到xxx日期 我正在考虑使用这个函数:

从日期时间导入时间增量,日期
def日期范围(开始日期、结束日期):
开始日期=datetime.date.today()
结束日期=开始日期+日期时间.timedelta(天数=5)
对于范围内的n(int((结束日期-开始日期).days)):
产量开始日期+时间增量(n)
对于日期范围中的单个日期(开始日期、结束日期):
打印单个日期.strftime(“%Y/%m/%d”)
但我不知道如何将其传递到views.py中的上下文

我想要这样的东西,但几天后:


您可以使用自定义模板标记解决此问题:

首先创建文件结构。进入需要标记的应用程序目录,并添加以下文件:

模板标签

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 %}
{%load custom_tags%}
{start_date | daterange:TIMEDTA%}
{%endfor%}

我找到了另一种方法:

只需将此函数传递给上下文
'daterange':daterange()

在模板中:

{% for i in date_range %}
...
{% endfor %}

我得到:
TemplateSyntaxError at/alocation/'for'语句应该使用“for x in y”格式:对于date\u out in daterange start\u date timedelta
我认为问题出在这里
daterange start\u date timedelta
对于django模板来说太复杂了。@在这里,尝试更新的答案,在函数定义之前,我修复了for循环和@register语句。不幸的是,我得到了
“Library”对象没有属性“daterange”
try register.filter('daterange',daterange)在函数定义之后,而不是@register.daterange,并确保将templatetags文件夹放在django应用程序的根目录中models.py、views.py等旁边。这不应该是
{%for i in daterange%}
{% for i in date_range %}
...
{% endfor %}