You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML模板中对Python字典new_headers进行索引取值?

Django模板中获取字典值的实现方案

静态键直接访问

在Django模板里,针对字典类型变量,你可以用.操作符直接访问对应键的值,比如要获取new_headers中键为190的值:

{{ new_headers.190 }}

如果担心键不存在引发异常,可结合default过滤器设置默认值:

{{ new_headers.get.190|default:0 }}

动态键访问(适配遍历场景)

如果需要用变量作为键(比如遍历文件夹时用foldr.id作为索引),需要自定义模板过滤器:

  1. 在你的Django应用下创建templatetags目录,新增__init__.py和custom_filters.py文件
  2. 在custom_filters.py中编写过滤器代码:
from django import template

register = template.Library()

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key, 0)  # 键不存在时返回默认值0
  1. 在模板顶部加载过滤器:
{% load custom_filters %}
  1. 模板中使用方式:
{% for foldr in my_folders %}
    文件夹{{ foldr.name }}的条目数:{{ new_headers|get_item:foldr.id }}
{% endfor %}

性能优化方案:避免模板索引,直接关联数据到模型对象

原视图存在N+1查询问题(每个文件夹都执行一次count查询),可以通过数据库注解优化,同时让模板代码更简洁:
修改视图代码:

from django.db.models import Count

def send_template(request):
    # 用annotate在数据库层面一次性统计每个文件夹的条目数
    my_folders = Folders.objects.filter(parent=None).order_by('name').annotate(entry_count=Count('folderentries'))
    return render(request, 'folders.html', {'my_folders': my_folders})

模板中直接访问对象属性:

{% for foldr in my_folders %}
    文件夹{{ foldr.name }}的条目数:{{ foldr.entry_count }}
{% endfor %}

这种方式既提升了查询性能,又无需在模板中处理字典索引,代码更易维护。


内容的提问来源于stack exchange,提问作者er abhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:10:33