Python 如何在django模板中循环datetime范围
我想在列中从当前日期循环到xxx日期 我正在考虑使用这个函数: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中的上下
从日期时间导入时间增量,日期
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 %}