有没有办法在标签调用之间保持状态?我需要存储传递给我创建的标记的最后一项。似乎我可以使用上下文来做到这一点,但它似乎不起作用。这是我的代码:
@register.simple_tag(takes_context=True)
def date_divider(context, date):
if 'last_date' not in context or context['last_date'] != date:
# display new date header
context['last_date'] = date
return date_header
问题是,即使传入的日期应与上下文中的日期匹配,也始终会创建新的日期标题。
我猜我在这里使用了上下文错误...有没有办法在上下文中存储这个最后日期,还是有更好的方法来做到这一点?
答案 0 :(得分:1)
第二次到达此标记时,您输入的上下文last_date
似乎不再存在(例如,可能已经弹出了该上下文?)。一种(一种hackish)解决方案是确保将last_date
插入“最高”的上下文中:
if 'last_date' not in context.dicts[0] or context.dicts[0]['last_date'] != date:
context.dicts[0]['last_date'] = date
我发现,当您编写的标签不是“嵌套”时,通常需要这种方法。顺便说一句,我也发现这种标签本身就是黑客!
(不是说这个特例就是我的案例)。