我试图建立一个自定义的用户模型,但尝试验证的成员Django的:不能导入名称check_password
ImportError at /members/login/ cannot import name check_password
我知道当我得到我的登录页面上出现以下错误check_password方法存在,但不知道我错过了什么。试图导入它时,我在做什么?
/members/backends.py
from django.conf import settings
# failing to import check_password here
from django.contrib.auth.models import check_password
from members.models import Member
class EmailAuthBackend(object):
"""Custom authentication backend the allows users to log in using
their email address."""
def authenticate(self, email=None, password=None):
"""Authentication method."""
try:
member = Member.objects.get(email=email)
if member.check_password(password):
return member
except Member.DoesNotExist:
return None
mebers/views.py
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
from django.contrib.auth import login as django_login, authenticate, logout as django_logout
from members.forms.login import LoginForm
from members.forms.register import RegisterForm
def login(request):
"""Login view."""
if request.method != 'POST':
form = LoginForm()
form = LoginForm(data=request.POST)
if form.is_valid():
member = authenticate(email=request.POST.get('email'),
password=request.POST.get('password1'))
if member is not None:
if member.is_active:
django_login(request, member)
return redirect('/')
else:
form = LoginForm()
return render_to_response('members/login.html', {
'form': form
}, context_instance=RequestContext(request))
你从1.9版本的django升级到1.9版本还是更高版本?它看起来像是从django.contrib.auth.models中删除了独立的check_password功能。它仍然可以(在1.9至少)从django.contrib.auth.hashers,但它可能是更好的调用用户对象的check_password方法。 – tbm