【问题标题】:Dictionary in Django template - filter usageDjango模板中的字典 - 过滤器使用
【发布时间】:2015-09-08 20:58:52
【问题描述】:

我有一个返回字典的视图。我搜索了一下,发现:Django template how to look up a dictionary value with a variable

这是我观点的return语句:

return render(request, 'App/index.html', context={'talks': word_count})

我是 django 的新手,所以我认为这就是为什么我没有注意到这里的错误。上面提到的问题的答案就是这个,创建一个过滤器并在模板中加载它,ok,这就是过滤器:

from django.template.defaulttags import register

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

这是我以错误方式使用它的地方:

<ul>
    {% for talk in talks %}
        <li>{{  talks|get_item:talk.count  }}</li>
    {% endfor %}
</ul>

这是我的字典:

{' - Nacho:': 1211, ' - Pato:': 1950, ' - Nicolas:': 1871, '}

我创建它的方式是这样的:

lista = {}
for line in lines:
            if user in line:
                count += 1
lista[user] = count

就这么简单。我遇到的错误是这个:

All the elements appear like this:

. None
. None
. None

不确切知道如何使用过滤器使得解决这个问题变得困难 也许在 django 方面有更多经验的人可以为我指明正确的方向

任何帮助将不胜感激

【问题讨论】:

    标签: python django dictionary


    【解决方案1】:

    您的字典项没有count 属性。

    但我不知道你为什么认为你需要这个过滤器。你有一个简单的字典,而不是复杂的嵌套数据结构;如果您只是想要每个元素的键(名称)和值(计数),只需使用 items 进行迭代:

    {% for name, count in talks.items() %}
        <li>{{ name }} - {{ count }}</li>
    {% endfor %}
    

    【讨论】:

    • 完美,我刚刚删除了“()”,这很有效。谢谢
    猜你喜欢
    • 2011-03-29
    • 2021-11-24
    • 2015-01-31
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多