我的自定义标记是:
register = template.Library() @register.simple_tag def last_three_messages(request): u=User.objects.get(username=request.user) last_three_messages=Message.objects.filter(to_user=u, opened=False)[:3] return last_three_messages
如何在模板中循环使用此项? 我试过:
{% for message in last_three_messages request %} do something {% endfor %}
这返回了一个错误:
“for”语句应使用“for x in y”格式:for message in 最后三条信息请求
如何循环查询集并将请求作为参数传递?
您还没有调用标记;仅引用for标记中的名称不会调用它。
您需要首先调用它并将其结果赋给一个变量:
{% last_three_messages request as my_messages %} {% for message in my_messages %}
但更好的方法是将其作为过滤器编写:
@register.filter def last_three_messages(request): ...
并称之为
{% for message in request|last_three_messages %}