изменить метод аутентификации учетной записи с имени пользователя на электронную почту - PullRequest
0 голосов
/ 15 октября 2019

Я хочу изменить метод входа с имя пользователя на электронная почта .

urls.py

from rest_framework_jwt.views import obtain_jwt_token,refresh_jwt_token

urlpatterns = [
    url(r'^login/$', obtain_jwt_token),
    url(r'^tokenRefresh/', refresh_jwt_token)
]

setting.py

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False

Я использовал вышеуказанное решение, но у меня не работает. не могли бы вы помочь !!

1 Ответ

1 голос
/ 15 октября 2019

Это потому, что django-allauth не имеет ничего общего с django-rest-framework-jwt. Установки, которые вы установили внутри settings.py, принадлежали django-allauth, поэтому, если вы хотите использовать эти настройки, вам следует использовать django-allauth просмотров.

С django-rest-framework-jwt просмотрами, я взялвзгляд на obtain_jwt_token представление, и я видел, что они используют get_user_model().USERNAME_FIELD для получения поля имени пользователя.

from django.contrib.auth import get_user_model

def get_username_field():
    try:
        username_field = get_user_model().USERNAME_FIELD
    except AttributeError:
        username_field = 'username'

    return username_field

Так что, если вы хотите изменить поле имени пользователя на другое, вы можете создатьпользовательская модель User и затем установите значение для USERNAME_FIELD на email, чтобы пользователь мог войти через email вместо username. Вот так:

имя_приложения / models.py

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

class User(AbstractUser):
    USERNAME_FIELD = 'email'

    def __str__(self):
        return self.email

и на ваших settings.py:

AUTH_USER_MODEL = 'app_name.User'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...