【问题标题】:Django Custom Filter Tags and access queryDjango 自定义过滤标签和访问查询
【发布时间】:2021-11-24 05:21:46
【问题描述】:

您好,在 Django 自定义过滤器标签方面需要一些帮助,非常感谢!

我已经注册了一个过滤器标签来访问 HTML 文件中的字典,如下所示:

DIRECTORY - blog>templatetags>post_extras.py

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)

一个名为dict_post的字典,key是post id,values是查询集。假设要获取 1 的字典键:

DIRECTORY - blog>templates>blog>home.html

{{ dict_post|get_item:1 }}

它在查询集中返回 'title' 和 'date_posted'

Post('dsdsdsdqqq111', '2021-10-03 10:24:40.623754+00:00')

过滤器标签效果很好,但是当我想在过滤器标签之后访问一些查询时,它会返回错误。如何只获得标题?我已经尝试过如下代码,但返回错误

DIRECTORY - blog>templates>blog>home.html

{{ dict_post|get_item:1.title }}

错误:

VariableDoesNotExist at /

寻求帮助,谢谢!

【问题讨论】:

    标签: python html django filter


    【解决方案1】:

    您可以使用{% with … %} … {% endwith %} template tag [Django-doc]:

    {% with somevar=dict_post|get_item:1 %}
        {{ somevar.title }}
    {% endwith %}

    因为我们在这里知道密钥是1(可能以后会改变),所以我们可以使用:

    {# if the key is known to be 1 #}
    {{ dict_post.1.title }}

    话虽如此,通常最好在视图中“准备”数据,这样您就不需要使用变量键执行字典查找。 Django 模板语言被刻意限制,以防止人们在模板中编写业务逻辑。

    【讨论】:

    • 哇,它有效,非常感谢,感谢您的及时解决!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2010-12-02
    • 2011-08-06
    • 1970-01-01
    相关资源
    最近更新 更多