Python 如何从django userchangeform的登录页面中删除用户名字段 登录页面中有三个字段(用户名、电子邮件、密码),但我只需要两个字段(电子邮件、密码)。如何从登录页面中删除用户名字段。提前谢谢
models.py forms.py 序列化程序.py 从登录端点删除字段Python 如何从django userchangeform的登录页面中删除用户名字段 登录页面中有三个字段(用户名、电子邮件、密码),但我只需要两个字段(电子邮件、密码)。如何从登录页面中删除用户名字段。提前谢谢,python,django-rest-framework,django-rest-auth,Python,Django Rest Framework,Django Rest Auth,models.py forms.py 序列化程序.py 从登录端点删除字段username 您可以通过如下方式覆盖LoginSerializer来删除字段username: 从rest\u auth.serializer将LoginSerializer作为RestAuthLoginSerializer导入 类LoginSerializer(重新授权LoginSerializer): 用户名=无 然后在设置.py中添加以下内容: REST\u AUTH\u SERIALIZER={'LOGIN\
username
您可以通过如下方式覆盖LoginSerializer
来删除字段username
:
从rest\u auth.serializer将LoginSerializer作为RestAuthLoginSerializer导入
类LoginSerializer(重新授权LoginSerializer):
用户名=无
然后在设置.py中添加以下内容:
REST\u AUTH\u SERIALIZER={'LOGIN\u SERIALIZER':'path.to.your.LOGIN SERIALIZER'}
帐户\身份验证\方法='电子邮件'
帐户\电子邮件\必需=真
添加端点以更改电子邮件和密码
事实证明,这实际上不是OP的问题,但为了完整起见,我把它留在这里
您可以添加端点来更改用户设置,如下所示:
从rest\u框架导入序列化程序、泛型
从…起导入模型
类UserSerializer(serializers.ModelSerializer):
类元:
model=models.CustomUser
字段=(“电子邮件”、“密码”)
类UserChangeView(generics.UpdateAliView):
queryset=models.CustomUser.objects.all()
serializer\u class=UserSerializer
顺便说一句,您的API不需要表单。是的,通常有两个字段(用户名、密码)且工作正常,但当我尝试通过提供电子邮件、密码登录并将用户名保留为空时,会出现错误(“必须包括用户名”和“密码”)。有没有办法只用电子邮件和密码登录?@MuhammadHussnain你说得对,我使用的是自定义登录序列化程序,我不知道默认的序列化程序有三个字段。我相应地更新了我的答案。如果您还有其他问题,请告诉我。事实上,我是DRF的新手。我在serializers.py中定义了LoginSerializer,并将{'LOGIN_SERIALIZER':'path.to.your.LoginSerializer'}替换为{'LOGIN_SERIALIZER':'path.to.serializers.LoginSerializer'},但现在我遇到了错误(没有名为'path'的模块),没有问题<代码>“path.to.your.LoginSerializer”
必须是完整的导入路径。例如,如果您的Django应用程序(您的models.py
所在的文件夹)被称为myapp
,那么您的设置必须如下所示:{'LOGIN\u SERIALIZER':'myapp.serializers.LoginSerializer}
。出于某种原因,此自定义登录不适用于我。当我转到浏览器上的url时,用户名仍然存在。
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
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
from rest_framework import serializers
from . import models
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = models.CustomUser
fields = ('email', 'username', )