デフォルトでdjango.contrib.auth.urls
は、このパターンからログイン ページが作成されます
(r'^login/$', 'django.contrib.auth.views.login'),
この URL を回避/オーバーライドしてから、新しいタイプのログインを処理する新しいビューを作成する必要があります。
例えば
urls.py に新しいログイン URL を作成します
(r'^emaillogin/$', 'email_login_view'),
views.py でメールによるログインをサポートするビューを作成する
# get default authenticate backend
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
# create a function to resolve email to username
def get_user(email):
try:
return User.objects.get(email=email.lower())
except User.DoesNotExist:
return None
# create a view that authenticate user with email
def email_login_view(request):
email = request.POST['email']
password = request.POST['password']
username = get_user(email)
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success page.
else:
# Return a 'disabled account' error message
else:
# Return an 'invalid login' error message.
参照: https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.login