Django rest framework Django REST Framework:在保留标准视图集的同时排除特定管线
我正在为我的API使用Django REST框架(DRF)。特别是,我已经使用Django rest framework Django REST Framework:在保留标准视图集的同时排除特定管线,django-rest-framework,django-urls,django-rest-viewsets,Django Rest Framework,Django Urls,Django Rest Viewsets,我正在为我的API使用Django REST框架(DRF)。特别是,我已经使用ModelViewSet设置了几个路由,而没有太多额外的编码。特别是,我有一条像这样的路线 /api/v1/collection/ 在所有可能的键中,我确实需要阻止一个特定的键,比如说special。对/api/v1/collection/special使用任何HTTP谓词的任何请求都应导致HTTP 404错误 我可以想出两种方法: 覆盖ViewSet层次结构上的某些方法。哪一个 在URL.py中,设置拦截此URL的
ModelViewSet
设置了几个路由,而没有太多额外的编码。特别是,我有一条像这样的路线
/api/v1/collection/
在所有可能的键中,我确实需要阻止一个特定的键,比如说special
。对/api/v1/collection/special
使用任何HTTP谓词的任何请求都应导致HTTP 404错误
我可以想出两种方法:
- 覆盖
层次结构上的某些方法。哪一个ViewSet
- 在
中,设置拦截此URL的更高优先级URL路由,如URL.py
。这有意义吗?要路由到的适当异常视图是什么路径(“集合/特殊”,视图=,name=“集合异常”)
推荐的方法是什么?上述任何一项或其他内容?如果使用的是
ModelViewSet
,则应覆盖get\u queryset()
方法。如果键值错误,则引发异常,否则返回查询集:
来自rest\u framework.exceptions导入未找到
类MyModelViewSet(viewsets.ModelViewSet):
# ...
def get_queryset(自我):
key=self.kwargs.get(“key”)
如果键==“特殊”:
未找到的提升()
返回MyModel.objecs.filter(pk=key)
这是否也适用于HEAD
和OPTIONS
请求?我认为HEAD和OPTIONS不用于获得响应。它们有不同的目的。404应该返回GET。啊,我发现我的问题不准确。我想用特殊
键“隐藏”资源。因此,所有HTTP谓词都应该失败。请尝试添加一个URL,该URL将在调用时引发异常或显示错误视图