Главная
/
Библиотека
/
Фреймворки
/
Django
/
Использование email-адреса в качестве имени пользователя
Использование email-адреса в качестве имени пользователя
В статье автор приводит пример, как можно использовать в Django адрес электронной почты в качестве имени пользователя. С примером Python-кода.
Автор: Chris
Система авторизации, встроенная в Django воспринимает имя пользователя, написанное только с помощью букв и цифр. Поэтому, адреса электронной почты здесь не подходят. Однако, во многих случаях, Вы бы хотели использовать адрес электронной почты в качестве имени пользователя. Этот фрагмент показывает Вам, как это можно сделать. Он имеет дополнительное преимущество в том, что если Вы хотите продолжить использовать обычный формат имени пользователя, то вы можете это сделать. Как бы "Два в одном"!
from django.contrib.auth.models import User from django.core.validators import email_re class BasicBackend: def get_user(self, user_id): try: return User.objects.get(pk=user_id) except User.DoesNotExist: return None class EmailBackend(BasicBackend): def authenticate(self, username=None, password=None): #If username is an email address, then try to pull #it up if email_re.search(username): try: user = User.objects.get(email=username) except User.DoesNotExist: return None else: #We have a non-email address username we #should try username try: user = User.objects.get(username=username) except User.DoesNotExist: return None if user.check_password(password): return user
Чтобы использовать этот файл, сохраните его в ваш проект например как: email-auth.py
Затем добавьте следующие строки в ваш settings.py file:
AUTHENTICATION_BACKENDS = (
'yourproject.email-auth.EmailBackend',
)
Вы можете посмотреть полное выполнение здесь.
Оригинал статьи на djangosnippets.org
Перевод ООО «Комтет» komtet.ru