python - 如何在 Django REST 框架 api 中进行用户注册

标签 python django django-rest-framework

我搜索了整个网络,但找不到满意的答案 我通过添加一些自定义字段更改了我的用户模型

所以现在我得到了 '用户名', '密码', '电子邮件', '名', '姓', '电话号码', '地址'

而不是

'用户名', '密码', '电子邮件', '名', 'last_name',---(这些是默认值)---


这是我的 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

我正在尝试制作一个 Django REST 框架 api,我可以在上面发布

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

并使用这些详细信息注册用户 我应该在 veiws.py 和 serializers.py 中添加什么

最佳答案

添加这些其他字段来自操作序列化器。如果您将字段 lated_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')

并在您的 View 中实例化该序列化器:

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

关于python - 如何在 Django REST 框架 api 中进行用户注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40724694/

相关文章:

python - Django 中的非主外键

django - FileUploadParser 没有得到文件名

Django Rest Framework - 如何在序列化器中嵌套多个字段?

django - 如何在 Django DRF 的 GenericAPIView 中正确使用查询集?

python - 如何在 QGraphicsScene 中定位和锚定文本?

python - 替换字符之间的点

python - Flask 应用程序找不到 gpg

python - 按位置选择列的简单方法

django - 高可用性 Redis

Django:如何在使用 Django 模板时定位页面