Django报错TypeError: 'set' object is not reversible问题求助
解决Django中TypeError: 'set' object is not reversible问题
可能的触发原因(即使你模板里用了[])
- 视图调用
reverse()时,args参数传了集合(比如args={1}),而非列表/元组 - 模板中
{% url %}标签引用的变量是集合类型(比如视图往模板传了{'task_ids': {1,2}},模板直接用{% url 'add_task' task_ids %}) - URL配置或视图处理参数时,不小心把参数转换成了集合
- 手滑写错语法:比如模板里某行url调用没注意写成了
{% url 'add_task' {1} %},而非{% url 'add_task' 1 %}或{% url 'add_task' [1] %}
排查与解决步骤
- 查看报错堆栈定位具体代码行:确认是模板里的url标签触发,还是视图里的reverse函数触发
- 检查对应位置的参数类型:
- 视图里:把
reverse()的args改成列表([1,2])或元组((1,2)),如果参数是集合,用list()转成列表再传入 - 模板里:如果是变量参数,先在视图里把集合转成列表再传给模板;或者自定义模板过滤器实现集合转列表后再使用
- 视图里:把
- 逐行检查所有涉及url反转的代码,确保没有隐性的集合参数
内容的提问来源于stack exchange,提问作者Makhovyk Anita
相关产品推荐
相关产品推荐

