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

Django模板含@键名字典取值报错及动态嵌套字典处理问题

解决Django模板中嵌套动态键字典的特殊字符键取值问题

核心思路

通过自定义模板过滤器绕过Django模板解析器对@这类特殊字符的限制,同时遍历外层动态键处理嵌套字典结构。

步骤1:编写自定义模板过滤器

在你的Django应用下创建templatetags目录(需包含空的__init__.py文件),新建dict_filters.py文件并写入以下代码:

from django import template

register = template.Library()

@register.filter
def get_item(dictionary, key):
    # 直接调用字典get方法取值,不受键名特殊字符影响
    return dictionary.get(key)

步骤2:在模板中使用过滤器

  1. 先在模板顶部加载自定义过滤器:
{% load dict_filters %}
  1. 遍历外层动态键的字典,通过过滤器获取内层带@的键值:
{% for outer_key, inner_data in mydata_2.items %}
    <div>
        外层键:{{ outer_key }}<br>
        模型名称:{{ inner_data|get_item:"@model" }}<br>
        类型:{{ inner_data|get_item:"@genre" }}<br>
        价格:{{ inner_data.price }}
    </div>
{% endfor %}

说明

  • 自定义过滤器get_item直接调用Python原生字典的get方法,完全避开Django模板语法对特殊字符键的解析限制。
  • 外层动态键通过items方法遍历,无论键是数字还是其他动态生成的值都能正常处理。
  • 确保你的应用已添加到settings.py的INSTALLED_APPS列表中,否则模板无法加载自定义过滤器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:11:35