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