Django模板标签 - 返回多个值或对象

时间:2013-03-28 13:04:30

标签: django django-templates

我有一个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 %}

1 个答案:

答案 0 :(得分:11)

这作为包含标记没有意义。特别是当你似乎在你告诉它渲染的同一个模板中使用它时。

您需要的是assignment tag

@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 }}