无法解决Django "NoReverseMatch" 异常及kwargs

1 投票
1 回答
1410 浏览
提问于 2025-04-16 06:39

我在使用Django的时候,遇到了一个问题,就是无法正确解析下面这个命名的URL。

这是URL配置的内容:

url(r'^shotmanager/(?P<shotid>\d+)/$', 'ctac.views.shotManager', {'message': "", 'errors': []}, name = 'shot-manager')

这是HttpResponseRedirect的调用:

return HttpResponseRedirect(reverse("shot-manager", kwargs={'shotid': id, 'message': s, 'errors': errorList}))

我在Django的文档里没有找到任何说明,表示我不能在URL中混合使用关键字参数和字典条目。奇怪的是,如果我只传递“shotid”,reverse函数就能正常解析。

我已经查看了以下的讨论:

使用额外选项反向解析Django URLs

并且对此进行了研究。但不清楚这个问题是否已经解决。

1 个回答

4

reverse 函数会根据你传入的参数生成一个完整的 URL。但是你想生成的这个 URL 并没有为 message 留出位置。那么这个信息要放在哪里呢?

根据评论的编辑
如果你想在不同的页面之间传递消息,正确的方法不是通过 URL,而是通过会话(session)。Django 还提供了一个 消息框架 来帮助你管理这些消息。

撰写回答