0

我正在使用带有前缀 + 包含的 DRF 路由器,如下所示:

router = BulkRouter()
router.register(r"myfeature", MyfeatureViewSet, base_name="myfeature")

urlpatterns = [
    url(r"^api/1/", include(router.urls)),]

这使我可以同时访问URLapi/1api/1/myfeatureURL。如何防止第一个 URL 返回 200?该端点的响应是在路由器下注册的所有内容的列表,我不想使其容易获得。

4

2 回答 2

0

两步:

1) 将视图直接连接到前缀 url (使用$)

urlpatterns = [
    url(r"^api/1/$", some_view,
    url(r"^api/1/", include(router.urls)),]

2) 定义视图。

Django 提供了一个单行 - django.views.defaults.page_not_found. 但是,在较新版本的 Django 中,这需要一个异常参数,因此您不能在单行中执行此操作。因此,我们有这样的事情:

def page_not_found_custom(request):
    return page_not_found(request, None)

urlpatterns = [
    url(r"^api/1/$", page_not_found_custom,
    url(r"^api/1/", include(router.urls)),]
于 2020-06-18T17:49:11.017 回答
0
from rest_framework.response import Response
from rest_framework import status
from rest_framework.viewsets import ModelViewSet

class UserViewSet(ModelViewSet):
    def list(self, request, *args, **kwargs):
        return Response(data='Not allow', status=status.HTTP_400_BAD_REQUEST)
于 2020-06-18T01:55:14.510 回答