django - * 之后的 _reverse_with_prefix() 参数必须是可迭代的,而不是 int
问题描述
我过去曾reverse
多次使用 Django,但今天出现此错误,这似乎不够直观,无法调试:
TypeError: _reverse_with_prefix() argument after * must be an iterable, not int
这是我使用它的视图:
from django.urls import reverse
...
...
def show_scores_url(self, obj):
scores_url = reverse('get_scores', args=(obj.pk))
return format_html('<a href="' + scores_url + '">Scores</a>')
...
...
解决方案
正如此评论中提到的,在 args 元组的末尾放置一个逗号可以修复它。
scores_url = reverse('get_scores', args=(obj.pk,))
(如this SO answer中所述,单项元组需要尾随逗号,以消除用括号括起来的表达式定义元组的歧义)
或者,如docs中所述,使用列表可以正常工作:
scores_url = reverse('get_scores', args=[obj.pk])
推荐阅读
- azure-functions - Azure函数:更新配置值抛出异常(未注册配置源。请在设置值之前先注册一个。)
- omnet++ - “ 错误:“在此上下文中不允许使用参数'map.net.xml'”,当我想在 sumo 中创建“.poly.xml”文件时”
- java - 使用 java.nio 时抛出 IllegalArgumentException
- r - 在 R 中重试 S3 读/写操作
- python - 我不知道我有什么版本的 Python,以及我的第一个网站的编码问题
- python - 如何从 Python 中的 Postsql 中提取时间成本解释
- java - 如何创建可变的 firebase 数据库名称?
- vue.js - Nativescript vue 工具提示使用
- python - 在 Python __init__ 方法中使用异步等待
- json - 将带有http的json发布到logstash时如何使用logstash过滤器“geoip”修复“_geoip_lookup_failure”标签