【问题标题】:How to access the dictionary keys and values in django templates如何访问 django 模板中的字典键和值
【发布时间】:2022-01-14 18:47:48
【问题描述】:

我创建了一个动态更新的消息发送者字典。如果我在 python 控制台窗口中打印字典键,我会得到预期的输出,但是当我尝试访问 Django 模板中的值时,我的 python 代码一无所获;

views.py

def home(request):
    senders = {}
    chatting =Message.objects.filter(seen=False)
    for msg in chatting:
        user = User.objects.get(id=msg.sender.id)
        
        if user != request.user and  user  not in senders.values():
            senders.update({user.id : user})
                    
    return render(request, 'home.html', senders)

模板 Home.html

    <div>
            {% for key, val in senders %}
           
         
                <div>
                    <a href="#">{{val}}</a>
                </div>
                
            {% endfor %}
        </div>

【问题讨论】:

    标签: python html django


    【解决方案1】:

    首先, 你确定你真的需要一个字典吗?通常 Django 有一个字典列表。所以,你只循环列表,就像这里:https://github.com/ansys/aedt-testing/blob/cefebb91675dd54391d6324cd78e7bc97d9a8f6b/aedttest/static/templates/project-report.html#L220

    然而, 直接回答问题:

    {% for key, value in data.items %}
        {{ key }}: {{ value }}
    {% endfor %}
    

    https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for

    【讨论】:

    • 我正在查询未读邮件以获取邮件发件人,因此我想列出发件人而不重复,即使发件人有多个未读邮件。有更好的方法吗?
    • 根据您的描述,我会在后端进行查询以进行过滤。这样模板就可以得到它所渲染的所有东西
    【解决方案2】:

    在 django 模板中使用以下指令:

    {{ key }}: {{ value }}
    

    【讨论】:

    • 这样的答案已经存在。你不需要重新发布它。
    猜你喜欢
    • 2021-04-10
    • 2011-07-11
    • 2013-11-13
    • 2014-02-08
    • 2015-07-09
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多