5

我有一个 Django (1.5) 模板标签,我在部分视图中使用它来呈现一些随机内容。该标记对单个记录进行查询。我退回单个物品没有问题,但是当我尝试退回完整的物品以供使用或多个物品时,我遇到了麻烦。

这是我的标签

@register.inclusion_tag('_footer.html')
def get_random_testimonial():
    # Grab random record
    record = Testimonials.objects.order_by('?')[0]
    return record.text

我希望能够将 record.text 和 record.id 返回到模板标签

为了呈现标签,我在 _footer.html 视图中有这个

{% load current_tags %}
{% get_random_testimonial %}

有没有办法我可以只返回记录对象,并能够通过以下方式获取该对象的所有值:

 {% get_random_testimonial.text %}
 {% get_random_testimonial.id %}
4

1 回答 1

12

作为包含标签,这没有意义。特别是当您似乎在与您告诉它渲染相同的模板中使用它时。

您需要的是一个分配标签

@register.assignment_tag
def get_random_testimonial():
    return Testimonials.objects.order_by('?')[0]

然后你可以这样做:

{% get_random_testimonial as my_testimonial %}
{{ my_testimonial.text }}
{{ my_testimonial.id }}
于 2013-03-28T13:12:12.200 回答