我有一个博客创建视图,管理员或工作人员用户只能创建博客,该视图不受普通用户的限制,并且运行良好。
目标:现在,我想仅在管理员或工作人员用户从其帐户登录时才向管理员显示网站上的创建博客按钮。
我在加载网站的一开始就有用户详细信息视图,如何响应该用户是管理员用户还是普通用户还是普通用户?
我在Redux的前端使用React。
到目前为止我所做的
path('user/', UserDetailsView.as_view(), name='rest_user_details'),
class UserDetailsView(RetrieveUpdateAPIView):
serializer_class = UserDetailsSerializer
permission_classes = (IsAuthenticated,)
def get_object(self):
return self.request.user
def get_queryset(self):
return get_user_model().objects.none()
答案 0 :(得分:0)
一种可能的解决方案是覆盖您的UserDetailsSerializer
并添加一个类似is_admin_user
的字段。
我们将使用Django-Restframework序列化程序中的serializerMethodField
。
class UserDetailsSerializer(serializers.ModelSerializer):
is_admin_user = serializers.SerializerMethodField()
class Meta:
model = User
fields = ('is_admin_user',) // And all other necessary fields
def get_is_admin_user(self, obj):
return obj.is_staff # this will return true for self.is_staff user
我们的主要目标是将一些有关用户角色的信息传递给前端,以便从这些信息中我们可以决定是否显示“创建博客”按钮。