简体   繁体   English

如何在Django REST Framework API中进行用户注册

[英]How to do user registration in Django REST framework api

I have searched the whole web and cant find any satisfying answer I have changed my user model by adding some custom fields 我搜索了整个网络,找不到任何满意的答案。我通过添加一些自定义字段来更改用户模型

So now i got 'username', 'password', 'email', 'first_name', 'last_name', 'phonenumber', 'address' 所以现在我得到了“用户名”,“密码”,“电子邮件”,“名字”,“姓氏”,“电话号码”,“地址”

instead of 代替

'username', 'password', 'email', 'first_name', 'last_name', --- (these are default)--- 'username','password','email','first_name','last_name',---(这些是默认设置)---


This is my models.py 这是我的模型

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

Im trying to make a Django REST framework api on which i can post 我正在尝试制作可以在其上发布的Django REST框架api

        'username',
        'password',
        'email',
        'first_name',
        'last_name',
        'phonenumber',
        'address'

And register user with these details what should i add in my veiws.py and serializers.py 并向用户注册这些详细信息,我应该在veiws.py和serializers.py中添加什么

Adding these other fields comes from manipulating the serializer. 添加其他字段来自操纵序列化器。 You could do something like this to expose those fields if you add field related_name='user_information' to your model definition: 如果将字段related_name='user_information'到模型定义中,则可以执行以下操作来暴露这些字段:

user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_information')

Then you create a serializer like: 然后创建一个序列化器,如下所示:

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

and instantiate that serializer in your view: 并在您的视图中实例化该序列化器:

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    [...]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM