在Django Rest框架中注册用户并为用户设置组 [英] Register User in Django Rest Framework and Set Group For User
本文介绍了在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屋!
查看全文