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

Django模板自定义过滤器取值报错:需2个参数仅传入1个

解决Django模板过滤器报错:"get_value_from_dict requires 2 arguments, 1 provided"

嘿,这个报错的根源其实很简单——你在模板里调用过滤器的语法格式不对!Django对过滤器的参数传递有严格的格式要求:过滤器名称和参数之间的冒号:前后不能加空格,不然Django会识别不到第二个参数,就会出现“缺一个参数”的报错。

你之前的错误写法:

{{ mydictionary | get_value_from_dict : item.id }}

这里get_value_from_dict和:之间、:和item.id之间的空格,会让Django误以为你只传了第一个参数(也就是mydictionary),第二个参数item.id根本没被正确解析进去。

改成正确的写法:

把多余的空格删掉,写成这样就没问题了:

{{ mydictionary|get_value_from_dict:item.id }}

另外再给你提几个小建议,避免后续踩坑:

  • 确认过滤器已经正确注册:
    1. 过滤器要放在app目录下的templatetags文件夹里(文件夹名必须是这个,而且里面要有__init__.py空文件)
    2. 在使用过滤器的模板顶部,一定要加载你的过滤器模块,比如你的过滤器文件叫custom_filters.py,就要加一句{% load custom_filters %}
  • 可以优化一下过滤器代码,给返回值加个默认值,避免key为空或者不存在时报错:
@register.filter('get_value_from_dict')
def get_value_from_dict(dict_data, key):
    return dict_data.get(key, '')  # 当key无效时返回空字符串,页面不会炸

这样调整之后,你的模板循环应该就能正常从字典里取出对应的值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:30:54