gpt4 book ai didi

python - 如何从 django userchangeform 的登录页面中删除用户名字段

转载 作者:行者123 更新时间:2023-12-04 01:12:37 28 4
gpt4 key购买 nike

登录页面中有三个字段(用户名、电子邮件、密码),但我只想要两个字段(电子邮件、密码)。如何从登录页面中删除用户名字段。提前致谢

models.py

from django.db import models
from django.contrib.auth.models import AbstractUser


class CustomUser(AbstractUser):
name = models.CharField(max_length=255)

def __str__(self):
return self.email

forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = CustomUser
fields = ('username','email')

class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = UserChangeForm.Meta.fields

serializer.py

from rest_framework import serializers
from . import models

class UserSerializer(serializers.ModelSerializer):
class Meta:
model = models.CustomUser
fields = ('email', 'username', )

最佳答案

删除字段 username从登录端点

您可以删除字段 username通过覆盖 LoginSerializer像这样:

from rest_auth.serializers import LoginSerializer as RestAuthLoginSerializer


class LoginSerializer(RestAuthLoginSerializer):
username = None

然后在您的 settings.py 中添加以下内容:

REST_AUTH_SERIALIZERS = {'LOGIN_SERIALIZER': 'path.to.your.LoginSerializer'}

ACCOUNT_AUTHENTICATION_METHOD = 'email'

ACCOUNT_EMAIL_REQUIRED = True

添加端点以更改电子邮件和密码

事实证明,这实际上不是 OP 的问题,但为了完整起见,我将其留在这里。

您可以添加一个端点来更改用户设置,如下所示:

from rest_framework import serializers, generics
from . import models


class UserSerializer(serializers.ModelSerializer):
class Meta:
model = models.CustomUser
fields = ('email', 'password')


class UserChangeView(generics.UpdateAPIView):
queryset = models.CustomUser.objects.all()
serializer_class = UserSerializer

顺便说一下,您不需要 API 的表单。

关于python - 如何从 django userchangeform 的登录页面中删除用户名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55120215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com