【问题标题】:dict keys with spaces in Django templatesDjango模板中带有空格的dict键
【发布时间】:2010-12-26 17:47:46
【问题描述】:

我正在尝试在 HTML 模板中显示我 view.py 中的字典,例如:

test = { 'works': True, 'this fails':False }

在模板中:

这没有问题:

{{ test.works }}

但是在单词之间有空格的字典键不起作用:

{{ test.this fails }}

我收到此错误:

无法解析余数:' fails' from 'this fails'

我该如何克服这个问题?我不是填充模型的人,所以我无法更改 dict 的键以删除空格。

【问题讨论】:

    标签: python django django-templates whitespace


    【解决方案1】:

    我不知道 Django 中的任何标准解决方案。我认为可以使用模板过滤器。

    你可能对这篇文章感兴趣http://push.cx/2007/django-template-tag-for-dictionary-access(作者使用的是模板标签术语但实际上是一个模板过滤器)

    希望对你有帮助

    【讨论】:

    • 这看起来可行,但为了记录,这不是模板标签,而是过滤器(看起来写那篇文章的人也犯了这个错误)。
    • 这不是一个错误。它比术语“模板过滤器”早了几年。 (我是这篇博文的作者。)
    【解决方案2】:

    你想要的过滤器类似于

    @register.filter(name='getkey')
    def getkey(value, arg):
        return value[arg]
    

    并与

    一起使用
    {{test|getkey:'this works'}}
    

    来源:http://www.bhphp.com/blog4.php/2009/08/17/django-templates-and-dictionaries

    【讨论】:

    • 别忘了在模板中{% load myfilter %}
    • @Ross - 链接的网站应该带有警告标志。戴上你的太阳镜!
    • 过滤器需要保留在 templatetags 目录内的文件中。更多信息@stackoverflow.com/questions/3474734/…
    【解决方案3】:

    这对我来说不合适。你能做到以下几点吗?

    {{ test['works'] }} 
    {{ test['this fails'] }}
    

    这就是 python 中字典访问的典型工作方式。

    【讨论】:

    • 无法解析余数:'['works']' from 'test['works']'
    • 是的,您可以在 Django 模板中使用. 表示法访问给定键的字典值。
    • 查看文档,我感觉他们不想使用空格。我看到的是 person.first_name 之类的东西,但从来没有其他东西。您可以尝试查看 django.template.__init__ 中的解析器代码,但它非常长且复杂。
    • 这可能会有所帮助:stackoverflow.com/questions/1275735/…
    猜你喜欢
    • 2016-01-16
    • 2019-11-24
    • 2019-01-08
    • 2011-02-27
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2016-10-16
    • 2012-08-01
    相关资源
    最近更新 更多