在Django REST framework中,settings.py中默认配置了全局的拦截器,
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
还可以设置默认的拦截器,比如在settings.py中配置DEFAULT_AUTHENTICATION_CLASSES、DEFAULT_PERMISSION_CLASSES、DEFAULT_THROTTLE_CLASSES等
REST_FRAMEWORK = {
# ...
'DEFAULT_AUTHENTICATION_CLASSES': [],
'DEFAULT_PERMISSION_CLASSES': [],
'DEFAULT_THROTTLE_CLASSES': [],
# ...
}
在之前设置的基础上,如果你还想在特定的视图中禁用拦截器,你可以在该视图中将它们设置为空,可以这样设置:
# Create your views here.
from rest_framework import viewsets
from rest_framework.decorators import api_view
class TestView(viewsets.ModelViewSet):
authentication_classes = []
permission_classes = []
上面的例子中,TestView 使用了默认的 APIView,并且在其内部将认证类和权限类设置为空列表,这样它就不会应用任何认证和权限相关的拦截器。
973

被折叠的 条评论
为什么被折叠?



