我的自定义标记是:
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 x in y':for message in last_three_messages请求
如何循环查询集并将请求作为参数传递?
答案 0 :(得分:2)
你还没有打电话给标签;只是引用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 %}