【问题标题】:Django Template Tags - Return multiple values or objectDjango 模板标签 - 返回多个值或对象
【发布时间】:2013-03-18 22:26:57
【问题描述】:

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

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

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

    你需要的是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 }}
    

    【讨论】:

    • 感谢 Daniel,模板标签的新手,对 2 之间的区别以及何时应该使用它们有点困惑。
    • 看起来 assignment_tag 不存在了
    • 嗯,这个答案已经有六年了。您可以将其替换为 simple_tag,它现在支持完全相同的赋值语法。
    猜你喜欢
    • 2013-11-28
    • 2011-08-21
    • 1970-01-01
    • 2013-06-09
    • 2014-10-17
    • 2011-07-28
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多