Python django.url.exceptions.NoReverseMatch:与#x27相反;foo列表';没有找到';foo列表';不是有效的视图函数或模式名称
我收到了“找不到receptionop list”的反向消息Python django.url.exceptions.NoReverseMatch:与#x27相反;foo列表';没有找到';foo列表';不是有效的视图函数或模式名称,python,django,testing,django-rest-framework,Python,Django,Testing,Django Rest Framework,我收到了“找不到receptionop list”的反向消息receptionop list'不是有效的视图函数或模式名称。在我的一个测试用例中,尝试执行以下操作时: reverse('receptionop-list') reverse('receptionoperation-list') 注意:我也尝试了reverse('receptionops-list') 我已将其设置在我的URL中,如下所示: router.register(r'receptionops', views.Recep
receptionop list'不是有效的视图函数或模式名称。
在我的一个测试用例中,尝试执行以下操作时:
reverse('receptionop-list')
reverse('receptionoperation-list')
注意:我也尝试了reverse('receptionops-list')
我已将其设置在我的URL中,如下所示:
router.register(r'receptionops', views.ReceptionOperationViewSet)
对我来说奇怪的是,事实上我还有一个路由器。register(r'receipt',views.receiptionviewset)
在同一个应用程序中注册,并且使用reverse('receiptation-list')
可以完美地工作
有人知道这里发生了什么吗
(如果需要,我可以提供一些进一步的信息)已修复
这里的问题是,我试图将错误的basename'receptionops'
作为目标。在阅读Django REST框架文档()时,我发现了以下解释:
basename—用于创建的URL名称的基。如果取消设置,则将根据viewset的queryset属性(如果有)自动生成basename。请注意,如果视图集不包含queryset属性,则在注册视图集时必须设置basename
这是我的前台操作视图集的queryset字段:
queryset = ReceptionOperation.objects.all()
因此,在这种情况下,我应该使用以下方法:
reverse('receptionop-list')
reverse('receptionoperation-list')
现在它工作得很好 与其编辑问题以添加解决方案,不如将其作为答案发布,但是(甚至可以在页面上直接回答问题)向路由器添加第三个参数。register
调用也可以解决此问题:路由器。register(r'receptionops',views.ReceptionOperationViewSet,'receptionops')
OK@Filnor。我将在下面回答它!:DOh,很高兴知道,谢谢@RossRogers!