"email": ["Введите действительный адрес электронной почты."] Django говорит, что электронная почта не является электронной почтой - PullRequest
0 голосов
/ 30 марта 2020

проблема:

Я пытаюсь сериализовать поле электронной почты, используя Django Rest Framework, однако сервер говорит, что не принимает электронную почту. Все письма встречаются с ошибкой «Введите действующий адрес электронной почты». Ниже приведены мои конфигурации.

serializers.py

class UserSerializer(serializers.ModelSerializer):

class Meta:
    model = User
    fields = ('email', 'password')

models.py

class User(AbstractBaseUser, PermissionsMixin):

   email = models.EmailField(unique=True, verbose_name='email address')
   first_name = models.CharField(max_length=256, verbose_name="First Name", blank=True)
   last_name = models.CharField(max_length=256, verbose_name="Last Name", blank=True)
   id = models.UUIDField(primary_key=True, unique=True)
   data = JSONField(default=default_data, name="device_data")
   is_staff = models.BooleanField(default=False)
   is_active = models.BooleanField(default=True)
   date_joined = models.DateTimeField(default=timezone.now)

   objects = UserManager()

   USERNAME_FIELD = 'email'
   REQUIRED_FIELDS = []

django .core.validators.py

@deconstructible
class EmailValidator:
     message = _('Enter a valid email address. Not valid')
     code = 'invalid'
     ...
     domain_whitelist = ['localhost', 'gmail', 'gmail.com', '@gmail.com']

http ie на сервер

  http -f POST http://127.0.0.1:8000/reg email="l55@gmail.com", password='pw'

ответ

HTTP/1.1 400 Bad Request
Allow: POST, OPTIONS
Content-Length: 42
Content-Type: application/json
Date: Mon, 30 Mar 2020 00:11:14 GMT
Server: WSGIServer/0.2 CPython/3.7.3
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY

{
     "email": [
        "Enter a valid email address."
     ]
 }

Предыдущее усилие:

  1. Мне сказали добавить домены в свойство domain_whitlist (что я и сделал)
  2. Я также пытался использовать класс пользователя Django по умолчанию, но я столкнулся с той же ошибкой.

Вы можете мне помочь?

Спасибо!

1 Ответ

0 голосов
/ 30 марта 2020

В вашем httpie звонке у вас есть запятая после адреса электронной почты, которая добавляется к электронному письму. Вы должны удалить его, l55@gmail.com, не является действительным адресом электронной почты

http -f POST http://127.0.0.1:8000/reg email="l55@gmail.com" password='pw'
...