Skip to main content
 首页 » 编程设计

python之Django:无法导入名称 check_password

2025年05月04日35thcjp

我正在尝试设置自定义用户模型,但在尝试对成员进行身份验证时,我的登录页面出现以下错误

/members/login/导入错误 无法导入名称 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)) 

请您参考如下方法:

试试这个:

from django.contrib.auth.hashers import check_password