我无法使用 Django-Rest-Framework 注册用户

     2023-02-24     164

关键词:

【中文标题】我无法使用 Django-Rest-Framework 注册用户【英文标题】:I cannot register a user using Django-Rest-Framework 【发布时间】:2021-04-06 21:11:54 【问题描述】:

我无法使用 Django Rest Framework 添加新用户。这是我的 models.py 代码:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    password = models.CharField(max_length=15, default= None)
    first_name = models.CharField(max_length=100, validators=[name_validator])
    last_name = models.CharField(max_length=100, validators=[name_validator])
    email = models.CharField(max_length=100, validators=[mail_validator])
    created_at = models.DateTimeField(auto_now_add=True)

如您所见,我正在使用 models.OneToOneField,因为我想扩展默认用户以添加更多字段。

下面是我的 serializers.py 文件:

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        permissions_classes = [
            permissions.AllowAny
        ]
        fields = '__all__'

视图集如下:

class UserViewset(viewsets.ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializer

当我转到我的端点并尝试添加新用户时,我无法在“用户”字段中输入任何内容:

Click for image

我是初学者,对我有很大帮助。

谢谢!

【问题讨论】:

您需要有用户才能将其添加到 Profile 模型。您可以通过在添加配置文件之前添加一些用户来测试这一点。现在,当您添加配置文件时,您将获得所有可用的用户来添加到配置文件。 但我想要的是创建一个具有所有这些属性的新用户。不要从一些现有用户中选择。 为此您需要可写嵌套序列化程序。另一种方法是覆盖 user serializer 的 create 方法。检查这个答案***.com/a/29867704/4901118 【参考方案1】:

你可以这样做

from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    password = models.CharField(max_length=15, default= None)
    first_name = models.CharField(max_length=100, validators=[name_validator])
    last_name = models.CharField(max_length=100, validators=[name_validator])
    email = models.CharField(max_length=100, validators=[mail_validator])
    created_at = models.DateTimeField(auto_now_add=True)

serializer.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = "__all__"

class ProfileSerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=True)
    class Meta:
        model = Profile
        fields = '__all__'

views.py

class UserViewset(viewsets.ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializer
    permission_classes = [permission. AllowAny,]

【讨论】:

请解释此代码转储如何解决 OP 遇到的问题?【参考方案2】:

当您想扩展默认用户以添加更多字段时,最好的方法是通过继承 AbstractUser 模型substituting a custom User model。使用这种方式,您可以轻松地对用户进行 CRUD。

【讨论】:

为啥我无法使用 CAGradientLayer 的掩码

】为啥我无法使用CAGradientLayer的掩码【英文标题】:WhyifailtousemaskofCAGradientLayer为什么我无法使用CAGradientLayer的掩码【发布时间】:2017-06-2115:20:25【问题描述】:我想画一个这样的按钮所以我使用CAGradientLayer、CAShapeLayer和UIBezierPat... 查看详情

我无法使用本地 Mongodb 使用 Prisma 启动项目

】我无法使用本地Mongodb使用Prisma启动项目【英文标题】:IcantstartaprojectwithPrismawithlocalMongodb【发布时间】:2020-05-0917:11:24【问题描述】:您好,我无法使用Prisma开始我的项目。当我写prismainitprojit并选择现有的Mongodb服务器时,它... 查看详情

我无法使用我的代码获取当前位置

】我无法使用我的代码获取当前位置【英文标题】:Ican\'tgetmycurrentlocationusingmycode【发布时间】:2017-06-0107:37:30【问题描述】:GPSTracker类publicclassGPSTrackerextendsServiceimplementsLocationListenerprivatefinalContextmContext;//flagforGPSstatusbooleanis 查看详情

我无法使用断点进行调试

】我无法使用断点进行调试【英文标题】:Ican\'tdebugusingbreakpoints【发布时间】:2012-01-0123:09:32【问题描述】:当我尝试放置断点并调试我的项目时,我在SpringSourceToolSuite(eclipse)中收到一条奇怪的错误消息,因此在这种情况下,... 查看详情

为啥我无法使用 DirectInput 获取键盘?

】为啥我无法使用DirectInput获取键盘?【英文标题】:WhycanInotacquirethekeyboardwithDirectInput?为什么我无法使用DirectInput获取键盘?【发布时间】:2013-03-2721:07:45【问题描述】:我今天刚开始接触DirectInput,在Windows7UltimateN上使用DirectIn... 查看详情

请帮助我无法构建相同的这个小部件,我无法使用颤振代码在列表视图中构建容器

】请帮助我无法构建相同的这个小部件,我无法使用颤振代码在列表视图中构建容器【英文标题】:pleasehelpicantbuildsamethiswidget,Ican\'tbuildcontainersinsidelistviewwithfluttercode【发布时间】:2022-01-2213:08:13【问题描述】:请帮助我无法构... 查看详情

无法使用 mongoosejs 填充

】无法使用mongoosejs填充【英文标题】:Can\'tpopulateusingmongoosejs【发布时间】:2017-02-1308:12:37【问题描述】:为什么我在尝试填充我的方案时无法获得结果(我使用mongoosejs)。在我的情况下,我的类别、子类别、子类别方案不使... 查看详情

我无法使用 ipfs

】我无法使用ipfs【英文标题】:Iamnotabletouseipfs【发布时间】:2021-12-2203:18:06【问题描述】:我想在ipfs上发布文件,但它显示错误。这是我的代码...constipfsClient=require(\'ipfs-http-client\');constipfs=ipfsClient(host:\'ipfs.infura.io\',port:5001,prot... 查看详情

无法使用 WebBrowser 控件登录

】无法使用WebBrowser控件登录【英文标题】:unabletologinwithWebBrowserControl【发布时间】:2015-10-2810:03:05【问题描述】:我使用C++中的IEwebbrowser控件开发了嵌入式WebBrowser。现在,有一个奇怪的问题。我无法登录到某个特定网站。我可... 查看详情

我无法使用物理键盘输入 uitextfield

】我无法使用物理键盘输入uitextfield【英文标题】:Ican\'tusemyphysicalkeyboardtotypeinuitextfield【发布时间】:2014-03-3105:43:23【问题描述】:我无法使用物理键盘在UITextField中输入内容。所以,我只是在iOS模拟器中使用虚拟键盘。【问题... 查看详情

我无法使用 npm 安装包裹

】我无法使用npm安装包裹【英文标题】:Icantinstallparcelwithnpm【发布时间】:2020-12-0313:22:10【问题描述】:我正在尝试使用安装包裹npminstall-gparcel-bundler它会显示npmWARNdeprecatedcore-js@2.6.11:core-js@<3isnolongermaintainedandnotrecommendedforusage... 查看详情

我无法使用 AVAudioEngine 录制

】我无法使用AVAudioEngine录制【英文标题】:Ican\'trecordusingAVAudioEngine【发布时间】:2019-03-0509:12:42【问题描述】:AVAudioSession.sharedInstance().setCategory(.playAndRecord,mode:.default)我可以使用上面的代码进行录制。但是,在播放过程中,只... 查看详情

为啥我无法使用 UISlider 降低亮度?

】为啥我无法使用UISlider降低亮度?【英文标题】:WhyI\'munabletodecreasethebrightnessusingaUISlider?为什么我无法使用UISlider降低亮度?【发布时间】:2014-06-2706:06:04【问题描述】:在我的应用程序中,我使用UISlider来降低/提高UIImage的亮... 查看详情

我无法在 Laravel 中使用事务

】我无法在Laravel中使用事务【英文标题】:I\'munabletousetransactionsinLaravel【发布时间】:2016-11-1205:09:28【问题描述】:我正在使用Laravel开展一个爱好项目(商店管理)。我正在尝试使用DB::beginTransaction()和DB::rollback(),但它不起作... 查看详情

使用 UIScrollView 时我无法触摸图像

】使用UIScrollView时我无法触摸图像【英文标题】:IcannottouchtheimagewhenusingUIScrollView【发布时间】:2012-05-0903:04:43【问题描述】:我使用UIScrollView显示UIImageView的序列(UIImageView被添加为scrollview的子视图),问题是我重写了UIImageView... 查看详情

我无法使用改造上传图片

】我无法使用改造上传图片【英文标题】:ican\'tuploadimageusingretrofit【发布时间】:2018-12-2011:42:59【问题描述】:我正在尝试使用post方法注册用户,用户已注册但图像未上传且没有错误。我看到了很多类似的问题,但没有得到解... 查看详情

无法使用模板字段更新我的网格

】无法使用模板字段更新我的网格【英文标题】:FailingtoupdatemyGridusingtemplatefield【发布时间】:2015-07-2504:04:06【问题描述】:我使用EntityDataSource。当我想用以下数据插入“ShiftDetails”表时:(3,1,04:00:00)如果我使用它插入很好:<... 查看详情

我无法使用 npm 安装Sharp

】我无法使用npm安装Sharp【英文标题】:Icantinstallsharpusingnpm【发布时间】:2020-02-1112:16:39【问题描述】:我无法使用sudonpminstallsharp安装Sharp库。终端输出:sharp@0.23.1安装/Users/kozakiewicz/node_modules/sharp(节点安装/libvips&&节点安... 查看详情