在Django Rest框架中注册用户并为用户设置组 [英] Register User in Django Rest Framework and Set Group For User

查看:121
本文介绍了在Django Rest框架中注册用户并为用户设置组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的用户类是:

  class UserProfile(User):
sex = models.SmallIntegerField(verbose_name = _(u'sex'),选择= SEX_TYPES,默认= 1)


UserProfileSerializer:

 code> 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 )
serialized = ProfileSerializer(data = request.DATA)
如果serialized.is_valid():
created_user = UserProfile.objects.create_user(
serialized.init_data ['email' ],
serialized.init_data ['username'],
serialized.init_data ['password'],

#这里我要为用户分配一个组或任何其他
created_user.groups =users
created_user.save()

return响应(serialized.data,status = status.HTTP_201_CREATED)
else:
返回响应(serialized._errors,status = status.HTTP_400_BAD_REQUEST)

与此测试:

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

群组总是出现错误。 {groups:[此字段为必填项。]}



如何为用户或其他任何内容分配一个组?



提前感谢

解决方案

确保您已经创建了用户组,然后执行以下操作:


$ b $导入组

users_group = Group.objects.get(name ='users')
$ b

  b $ b created_user.groups = [users_group] 
#或者替代:
#created_user.groups.add(users_group)

参考: / p>

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


My user class is:

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 view that allow users to register is:

@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)

with this test:

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/

There is always error with groups.{"groups": ["This field is required."]}

How can I assign a group for user or anything else?

Thanks in advance

解决方案

Make sure you have users group created, then you do the following:

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)

Reference:

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

这篇关于在Django Rest框架中注册用户并为用户设置组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆