django rest框架中如何在不进行身份验证的情况下允许访问基本路由

时间:2019-09-08 08:03:37

标签: python django django-rest-framework

在全局设置中将“默认”权限类设置为“ IsAuthenticated”时,如何允许访问基本路由。

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
        # 'rest_framework.permissions.AllowAny',
        'rest_framework.permissions.IsAuthenticated',

    ],
}

我知道您可以只在各个视图中设置Permissions_classes = [AllowAny]。 但是我希望我的基本路线具有相同的权限,即没有权限。这是我在urls.py

中设置路由的方式
router_public = DefaultRouter()
'''
PUBLIC ROUTES HERE
'''
router_public.register(
    r'cars', car_viewset.Car_Public_Viewset, base_name='Cars')
router_public.register(
    r'planes', plane_views.Plane_Public_ViewSet, base_name='Planes')

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/admin/', include(router_admin.urls)),
    path('api/public/', include(router_public.urls)),
]

由于我在vews中将汽车和飞机的Permission_classes设置为AllowAny,因此无需身份验证就可以访问它们。

由于没有与其关联的视图,我该如何对基本路线http://localhost:8000/api/public/进行相同操作。

1 个答案:

答案 0 :(得分:0)

您可以使用 authenticated_class

为不同的视图类提供不同的权限
from rest_framework.permissions import AllowAny

class ExampleClass(viewsets.GenericViewSet):
     permission_classes = (AllowAny,)
     [...]

在您要通过api / public /

访问的视图中使用Permission_classes