簡體   English   中英

如何在Django REST Framework API中進行用戶注冊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM