[英]How to do user registration in Django REST framework api
我搜索了整个网络,找不到任何满意的答案。我通过添加一些自定义字段来更改用户模型
所以现在我得到了“用户名”,“密码”,“电子邮件”,“名字”,“姓氏”,“电话号码”,“地址”
代替
'username','password','email','first_name','last_name',---(这些是默认设置)---
这是我的模型
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
class userinformation(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phonenumber = models.CharField(max_length=100)
address = models.CharField(max_length=200)
class Meta:
verbose_name_plural = "User Information"
def __str__(self):
return str(self.user)+' - '+self.phonenumber+' - '+self.address
我正在尝试制作可以在其上发布的Django REST框架api
'username',
'password',
'email',
'first_name',
'last_name',
'phonenumber',
'address'
并向用户注册这些详细信息,我应该在veiws.py和serializers.py中添加什么
添加其他字段来自操纵序列化器。 如果将字段related_name='user_information'
到模型定义中,则可以执行以下操作来暴露这些字段:
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_information')
然后创建一个序列化器,如下所示:
class UserSerializer(serializers.HyperlinkedModelSerializer):
phonenumber = serializers.CharField(source='user_information.phonenumber')
address = serializers.CharField(source='user_information.address')
class Meta:
model = User
fields = ('username', 'password', 'email', 'first_name', 'last_name',
'phonenumber', 'address')
并在您的视图中实例化该序列化器:
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
[...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.