Dj Rest Auth 自定义注册不起作用

2024-02-25

I am using DJ-REST-AUTH for user registration API. I want the first_name and last_name to show in the API endpoint however right now it is just showing the default.current API endpoint

我尝试配置设置并创建自定义 RegisterSerializer。我读到我还需要一个 def save(self, request) 函数,并尝试实现它。

主应用程序 urls.py

from django.contrib import admin
from django.urls import path, include
from django.views.generic import TemplateView

urlpatterns = [
    
    path('admin/', admin.site.urls),
    path('api/authentication/', include('authentication.urls')),]

设置.py

INSTALLED_APPS = \[
'rest_framework',
'rest_framework.authtoken',

    'allauth',
    'allauth.account',
    'dj_rest_auth',
    'dj_rest_auth.registration',
    
    'authentication',]

SITE_ID = 1

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',

)

REST_AUTH_REGISTER_SERIALIZERS = {
'REGISTER_SERIALIZER': 'authentication.serializers.CustomRegisterSerializer'
}

# Configure allauth to use email as username

ACCOUNT_AUTHENTICATION_METHOD = 'username'
ACCOUNT_EMAIL_VERIFICATION = 'none'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = 'username'
ACCOUNT_LOGOUT_ON_GET = True

身份验证应用程序

urls.py


from django.urls import path
from dj_rest_auth.views import (
LoginView, LogoutView, PasswordResetView, PasswordResetConfirmView
)
from .views import CustomRegisterView

urlpatterns = \[
path('register/', CustomRegisterView.as_view(), name='register'),
path('login/', LoginView.as_view(), name='login'),
path('logout/', LogoutView.as_view(), name='logout'),
path('passwordReset/', PasswordResetView.as_view(), name='password_reset'),
path('passwordResetConfirm/\<str:uidb64\>/\<str:token\>/',
PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
\]

序列化器.py


from rest_framework import serializers
from allauth.account.adapter import get_adapter
from django.contrib.auth.models import User
from dj_rest_auth.registration.serializers import RegisterSerializer

class CustomRegisterSerializer(RegisterSerializer):
first_name = serializers.CharField()
last_name = serializers.CharField()

    class Meta:
        model = User
        fields = ('email', 'username', 'first_name', 'last_name', 'password1', 'password2')
        
    def get_cleaned_data(self):
        return {
            'username': self.validated_data.get('username', ''),
            'password1': self.validated_data.get('password1', ''),
            'password2': self.validated_data.get('password2', ''),
            'email': self.validated_data.get('email', ''),
            'first_name': self.validated_data.get('first_name'),
            'last_name': self.validated_data.get('last_name'),
            
        }   
        
    def save(self, request):
        adapter = get_adapter()
        user = adapter.new_user(request)
        self.cleaned_data = self.get_cleaned_data()
        user.first_name = self.cleaned_data.get('first_name')
        user.last_name = self.cleaned_data.get('last_name')
        user.save()
        adapter.save_user(request, user, self)
        return user

views.py


from dj_rest_auth.registration.views import RegisterView
from rest_framework import permissions

class CustomRegisterView(RegisterView):
permission_classes = \[permissions.AllowAny\]


我找到了答案。我需要通过serializer_class在视图上指定序列化器

from dj_rest_auth.registration.views import RegisterView
from rest_framework import permissions
from .serializers import CustomRegisterSerializer

class CustomRegisterView(RegisterView):
    serializer_class = CustomRegisterSerializer
    permission_classes = [permissions.AllowAny]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dj Rest Auth 自定义注册不起作用 的相关文章

  • 为 HTML5 Django Web 应用程序实现实时通知系统

    我目前正在开发一个由 Django apache 提供服务的 HTML5 Web 应用程序 该应用程序的目标是监视多个设备 所有客户端逻辑都是用 Angular 编写的 所有数据都来自对后端进行的基于 JSON 的类似 REST 的调用 我
  • 使用 Google App Engine 和 Django 将第三方库 (twilio) 添加到项目中

    每个人 我是这个领域的新手 我使用 django 框架使用 google 应用引擎开发 Web 应用程序 我有一个关于 python lib dir 问题的故障排除 导入错误 没有名为 的模块 我的 appengine config py
  • 自定义 django-rest-framework-simplejwt 的 JWT 响应

    我正在设置 Django 来发送 JWT 响应而不是视图 我尝试使用 django rest framework simplejwt 这个框架中提供了一个函数TokenObtainPairView as view 返回一对 jwt 我需要使
  • 使用 Django ModelForm 上传个人资料图片

    我环顾过相关问题 但似乎没有一个答案有效 我正在尝试上传用户的个人资料图像并让它替换 覆盖 当前图像 保存图像后 我想将文件名更改为用户 ID 图像将以当前形式上传 但不会替换现有图像 例如 它将保存为 2 1 png class Phot
  • Django 迁移 RunPython 无法调用模型方法

    我正在使用以下命令创建数据迁移RunPython方法 但是 当我尝试在对象上运行方法时 没有定义任何方法 是否可以使用调用模型上定义的方法RunPython 模型方法在迁移中不可用 包括数据迁移 然而 有一个解决方法 它应该与调用模型方法非
  • GeoDjango:距离对象不可序列化

    我刚刚学习 geo django 我可以找出所有地方到一个点的距离 但是当我使用 values方法注释distance场 我得到 TypeError Object of type Distance is not JSON serializa
  • 如何从 django imageFile 输入中获取图像

    我想从ImageField文件输入然后在模板中显示图像 最后将图像保存到模型中imageField The file image request POST get image 只获取图像名称 如何获取实际图像 我需要将图像上传到NamedT
  • 使用 Javascript 在单独的表单页面上使用图像文件名更新隐藏的表单字段

    我有一个定制的 Djangowizard form html它在我的调查的三个不同页面上向用户显示了 3 张不同的图像 我正在尝试使用下面的脚本来更新 3 个不同页面上的 3 个隐藏表单字段 其内容为value display image
  • 在 Docker 容器中看不到 Django

    我想在一个简单的 Docker 容器中运行 Django 首先 我使用 Docker 文件构建了容器 里面没有什么特别的 只有 FROM RUN 和 COPY 命令 然后我用命令运行我的容器 docker run tid p 8000 80
  • Django 的登录会话

    我正在尝试在我的网络应用程序中设置登录会话 但无法使其正常工作 我是 django 新手 阅读了会话文档 但没有连接到我的网络应用程序 我现在想要的只是检查用户是否已登录 如果没有则重定向到登录页面 这是我尝试合并登录会话的代码 设置 py
  • django 在查询中计算相同字段值的最有效方法

    假设我有一个包含很多字段的模型 但我只关心一个 charfield 可以说 charfield 可以是任何东西 所以我不知道可能的值 但我知道这些值经常重叠 所以我可以有 20 个带有 abc 的对象和 10 个带有 xyz 的对象 或者我
  • django - 如何将实际图像文件从一个模型复制到另一个模型?

    我想将项目中的图像从一个模型复制到另一个模型 假设这些是我的模型 class BackgroundImage models Model user models ForeignKey User image models ImageField
  • Django 多个具有相同名称的输入字段值

    我需要一些帮助 如何处理具有多个输入字段值且名称相同的表单 而且只有一次查看 这实际上是针对基本问题的形式 我发现这个方法的另一个想法https stackoverflow com a 478406 6396981 https stacko
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在 success_url 中传递上下文数据?

    我制作了一个表单 我希望再次返回相同的表单 这次使用可在我的模板中使用的上下文数据来显示表单已成功发送 我怎样才能做到这一点 class ContactUsView FormView form class ContactUsForm tem
  • Django在模板中形成多个选择框大小

    我有一个模板
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用

随机推荐