Django rest framework Django REST Framework:在保留标准视图集的同时排除特定管线

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的

我正在为我的API使用Django REST框架(DRF)。特别是,我已经使用
ModelViewSet
设置了几个路由,而没有太多额外的编码。特别是,我有一条像这样的路线

/api/v1/collection/

在所有可能的键中,我确实需要阻止一个特定的键,比如说
special
。对
/api/v1/collection/special
使用任何HTTP谓词的任何请求都应导致HTTP 404错误

我可以想出两种方法:

  • 覆盖
    ViewSet
    层次结构上的某些方法。哪一个
  • URL.py
    中,设置拦截此URL的更高优先级URL路由,如
    路径(“集合/特殊”,视图=,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将在调用时引发异常或显示错误视图