gpt4 book ai didi

Django REST - 序列化 User.get_all_permissions

转载 作者:行者123 更新时间:2023-12-04 01:52:38 25 4
gpt4 key购买 nike

我正在使用 Django Rest 后端和 VueJS 前端构建应用程序,并且正在通过授权和身份验证。我的身份验证运行良好,但有点坚持让前端(VueJS)知道用户有权在添加/更改/查看/删除模型方面做什么。例如,如果用户无法添加客户,我不想显示“添加客户按钮”。

通过 Django 文档和 StackOverflow 上的解决方案,我相信最简单的方法是将用户的权限从 Django 发送到 VueJS。

我可以看到获得权限的“最佳”/“最简单”方法如下:

    userModel = User.objects.get(request.user)
return User.get_all_permissions(userModel)

我被卡住的地方正是该逻辑的放置位置以及如何对其进行序列化。以上是否属于View,Serializer,other?到目前为止,我只使用模型(ModelSerializers 和 ModelViews),但我认为这不属于这一类。

提前致谢...

最佳答案

您应该将此逻辑添加到 View 中,因为 View 用于实现这些类型的逻辑。
实际上,您不想使用 serializers在这里,由于 的响应.get_all_permissions() 方法已经是序列化形式
除此之外,您提供的代码是 不好 (这显然很糟糕)。它应该如下所示,

return request.user.get_all_permissions()

因为,您将通过 获取当前登录用户的实例request.user ,要获得他/她的权限,你们都需要调用 get_all_permissions()方法

示例
from rest_framework.decorators import api_view, permission_classes
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated


@permission_classes(IsAuthenticated, )
@api_view()
def my_view(request):
logged_in_user = request.user
return Response(data=logged_in_user.get_all_permissions())

关于Django REST - 序列化 User.get_all_permissions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52267646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com