在全局设置中将“默认”权限类设置为“ 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/进行相同操作。
答案 0 :(得分:0)
您可以使用 authenticated_class
为不同的视图类提供不同的权限from rest_framework.permissions import AllowAny
class ExampleClass(viewsets.GenericViewSet):
permission_classes = (AllowAny,)
[...]
在您要通过api / public /
访问的视图中使用Permission_classes