问题描述
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.base_user import BaseUserManager
# user manager code
class MyUserManager(BaseUserManager):
def create_user(self,email,password=None,**extra_fields):
"""
Creates and saves a User with the given email,first name,last name and password.
"""
if not email:
raise ValueError("Users must have an email address")
user = self.model(
email=self.normalize_email(email),**extra_fields,)
user.set_password(password)
user.save(using=self._db)
return user
# Create your models here.
class CustomUser(AbstractUser):
email = models.EmailField(unique=True)
objects = MyUserManager()
USERNAME_FIELD = 'email'
required_FIELDS = ['first_name','last_name']
def __str__(self):
return self.email
我的序列化程序.py
class RegisteSerializer(serializers.Serializer):
password = serializers.CharField(style={"input_type": "password"},write_only=True)
password2 = serializers.CharField(style={"input_type": "password"},write_only=True)
email = serializers.EmailField(required=allauth_settings.EMAIL_required)
first_name = serializers.CharField(min_length=2,max_length=50)
last_name = serializers.CharField(min_length=2,max_length=50)
USERNAME_FIELD = 'email'
class Meta:
model = User
fields = [
'id','first_name','last_name',"email","password","password2",]
extra_kwargs = {'password': {'write_only': True}}
def validate_email(self,email):
email = get_adapter().clean_email(email)
if allauth_settings.UNIQUE_EMAIL:
if email and email_address_exists(email):
raise serializers.ValidationError(
("A user is already registered with this e-mail address."))
return email
def validate_password(self,password):
return get_adapter().clean_password(password)
def validate(self,data):
if data['password'] != data['password2']:
raise serializers.ValidationError(
("The two password fields didn't match."))
return data
def get_cleaned_data(self):
return {
'first_name': self.validated_data.get('first_name',''),'last_name': self.validated_data.get('last_name','password': self.validated_data.get('password','password2': self.validated_data.get('password','email': self.validated_data.get('email',}
def save(self,request):
adapter = get_adapter()
user = adapter.new_user(request)
self.cleaned_data = self.get_cleaned_data()
adapter.save_user(request,user,self)
setup_user_email(request,[])
user.save()
return user
当我使用端点 http://127.0.0.1:8000/api/dj-rest-auth/registration/
注册时
我以我想要的方式迎接所有领域
但是当我尝试登录 http://127.0.0.1:8000/api/dj-rest-auth/login/
我仍然看到用户名
即使在配置了我的 django allauth 之后
# django-allauth configuarations
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_EMAIL_required = True
ACCOUNT_USERNAME_required = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = True
我是 django rest 框架的新手,我不想重写我什至不知道如何重写的所有内容
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)