在Django Rest Framework中注册用户并为用户设置组

 gunnerliang_851 发布于 2023-02-08 15:12

我的用户类别是:

class UserProfile(User):
    sex = models.SmallIntegerField(verbose_name=_(u'sex'), choices=SEX_TYPES, default=1)
    .
    .

UserProfileSerializer:

class ProfileSerializer(serializers.ModelSerializer):
     groups = GroupSerializer()

     class Meta:
        model = UserProfile
        fields = ('id', 'first_name', 'last_name', 'username','email','groups')

允许用户注册的api视图是:

@api_view(['POST'])
def create_user(request):
      serialized = ProfileSerializer(data=request.DATA)
      if serialized.is_valid():
          created_user = UserProfile.objects.create_user(
              serialized.init_data['email'],
              serialized.init_data['username'],
              serialized.init_data['password'],
          )
          # here I want assign a group for user or anything else
          created_user.groups = "users"
          created_user.save()

          return Response(serialized.data, status=status.HTTP_201_CREATED)
      else:
          return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)

通过此测试:

curl -X POST -H "Content-Type: application/json" -d '
{
"username":  "aaa",
"email": "aa@aaa.com" ,
"password":  "111111"
}' http://127.0.0.1:8000/api/users/register/

组总是有错误。{"groups": ["This field is required."]}

如何为用户或其他任何人分配组?

提前致谢

1 个回答
  • 确保已创建用户组,然后执行以下操作:

    from django.contrib.auth.models import Group
    
    users_group = Group.objects.get(name='users')
    
    created_user.groups = [users_group]
    # or instead:
    # created_user.groups.add(users_group)
    

    参考:

    https://docs.djangoproject.com/en/dev/topics/auth/default/#permissions-and-authorization

    2023-02-08 15:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有