Django redirect跳转视图报no reverse match无反向匹配错误
问题根因
你的urls.py中设置了app_name = 'polls',这会给当前app下所有注册的路由加上polls命名空间。当你直接调用redirect('testDirect')做反向路由解析时,Django只会查找全局无命名空间、名为testDirect的路由,匹配不到自然会抛出No Reverse Match错误。
修复方法
修改randomQuestion视图里的重定向逻辑,在路由名前加上对应的命名空间前缀即可:
def randomQuestion(request): random_question = Question.objects.order_by('?')[0] return redirect('polls:testDirect')
补充说明
你现在代码里用的硬编码路径return redirect("/polls/testDirect")虽然能临时实现跳转,但非常不推荐:如果后续你修改了该路由的路径、或者调整了app的路由前缀,所有写死的硬编码路径都要逐一手动修改,维护成本极高。带命名空间的反向解析是Django官方推荐的写法,后续路由规则调整时不需要修改视图层的跳转逻辑。
内容的提问来源于stack exchange,提问作者jarjarbinks99
相关产品推荐
相关产品推荐

