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

Django模板标签动态调用字典报错,求解决方法

解决Django模板标签中动态获取模块内字典的问题

问题出在你对模块属性的访问方式上——你现在写的dict.value[arg]是在尝试直接访问property.dictionary模块里名为value的字典,但实际上value是你传入的字符串参数(比如"list_type_dict"),模块里根本没有叫value的字典,所以才会报错说不存在这个键。

给你两个关键的修正点,直接改代码就能解决:

  1. 用getattr()函数根据字符串参数动态获取模块里的字典对象
  2. 建议把模块别名从dict改成dict_module,避免和Python内置的dict类型混淆,减少代码歧义

修改后的模板标签代码如下:

import property.dictionary as dict_module

def getlisttype(value, arg):
    # 根据传入的字典名称字符串,从模块中获取对应的字典对象
    target_dict = getattr(dict_module, value)
    # 用get方法取值,键不存在时返回空字符串(也可以改成你需要的默认值)
    return target_dict.get(arg, "")

额外给你两个小建议:

  • 使用dict.get(arg, 默认值)代替直接dict[arg],这样如果传入的arg在字典里不存在,模板渲染时不会直接抛出异常,而是返回你设置的默认值,代码更健壮。
  • 确保在模板中传入的value参数是dictionary.py里实际存在的字典名称,比如"list_type_dict"或者"list_category_dict",大小写要完全匹配。

举个模板里的使用例子,方便你参考:

{% load your_tag_name %}
{# 获取list_type_dict中键为1的值,会输出Sale #}
{{ "list_type_dict"|getlisttype:1 }}

{# 获取list_category_dict中键为2的值,会输出Commercial #}
{{ "list_category_dict"|getlisttype:2 }}

内容的提问来源于stack exchange,提问作者p.ry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:38:15