python - 如何在 Django Rest Framework 的视图集中添加对自定义操作的特定访问级别?
问题描述
我在 Django Rest Framework 中有一个具有所有 crud 功能的 ModelViewSet,并将权限设置为 IsAuthenticated,但我做了一个自定义操作并希望它公开,但我不知道如何做到这一点,因为文档只显示了如何做使用@api_view(),这是我的 ModelViewSet
class UserViewSet(viewsets.ModelViewSet):
"""User viewset"""
queryset = User.objects.all()
serializer_class = UserModelSerializer
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
@action(detail=False, methods=['post'])
def signup(self, request):
"""Sign Up users without profile. """
serializer = UserSignUpSerializer(data=request.data)
if serializer.is_valid(raise_exception=True):
user = serializer.save()
data = {
'user' : user,
}
return Response(data, status=status.HTTP_201_CREATED)
@action(detail=False, methods=['post'])
def login(self, request, *args, **kwargs):
""" Handle logins request. """
serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user, token = serializer.save()
data= {
'user': user,
'access_token' : token
}
return Response(data, status=status.HTTP_201_CREATED)
我想公开登录@action,希望你们能帮助我
解决方案
您可以将参数添加到操作 deacrotor 以更改权限类。
@action(detail=False, methods=['post'], permission_classes=[AllowAny])
def login(self, request, *args, **kwargs):
""" Handle logins request. """
serializer = UserLoginSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
user, token = serializer.save()
data= {
'user': user,
'access_token' : token
}
return Response(data, status=status.HTTP_201_CREATED)
推荐阅读
- c# - 为什么在我传递(按值)字典时会生成 $ReturnValue1
> 到一个函数 - spring-boot - spring boot如何找到META-INF/spring.factories的路径
- python - 字典和键
- javascript - 我使用 Visual Studio 2017 制作的 UWP JS 应用程序不会打印 JavaScript 生成的数字。这有什么原因或解决方法吗?
- mvvm - UWP 导航期间的数据绑定
- python - 我想制作一个网络爬虫,它可以爬取所有公共 Instagram 个人资料并从每个帖子中获取数据。我如何实现这一目标?
- android - 每次将 Fragment 添加到 Fragment Manager 时,Recycler 的内容都会翻倍,即使它应该被清除
- python - 为什么 Numpy 中的 0d 数组被视为标量?
- javascript - React - 如何在不使用 setTimeout 的情况下将前端与后端请求同步?
- rgraph - 带有镜像 X 轴的散点图