Django 在支持身份验证的情况下使用auth.login(错误)

Django 在支持身份验证的情况下使用auth.login(错误),django,django-authentication,Django,Django Authentication,我创建了一个身份验证后端: from login.models import zUser import hashlib class AuthBackend: def authenticate(self, username=None, password=None): #переписана функція для пошуку користувача в таблиці zusers password = hashlib.md5(password).hexdigest()

我创建了一个身份验证后端:

from login.models import zUser
import hashlib

class AuthBackend:
    def authenticate(self, username=None, password=None): #переписана функція для пошуку користувача в таблиці zusers
        password = hashlib.md5(password).hexdigest() #хешування отриманого пароля в md5
        try:
            user = zUser.objects.get(userpass = password, login = username)
        except zUser.DoesNotExist:
            return None
        return user

    def get_user(self, user_id): #повернути користувача за id
        try:
            user = zUser.objects.get(id=user_id)
        except zUser.DoesNotExist:
            return None
        return user
但在我看来,当我调用auth.loginrequest,user时,我有一个错误: 以下字段在此模型中不存在或是m2m字段:上次登录

def Login(request):
    if request.method == 'POST':
        username = request.POST.get('username') #введений логін
        password = request.POST.get('password').encode('utf-8') #введений пароль
        user = auth.authenticate(username = username, password = password)
        if user is not None:
            user_id = getattr(user, "userid") #отримання userid користувача
            auth.login(request, user)
            return redirect('/')
        else:
            return redirect('/') #перенаправлення на головну сторінку
    else:
        return render_to_response('index.html', context_instance=RequestContext(request))
然后我添加到设置中:

AUTHENTICATION_BACKENDS = (
    'login.auth_backends.AuthBackend',
    'django.contrib.auth.ModelBackend'
)
但现在还有其他错误: 模块django.contrib.auth.ModelBackend未定义ModelBackend属性/类

更新:这是我的zUser表

class zUser(models.Model): #модель користувача, створена по аналогії до таблиці zusers
    userpass = models.CharField(max_length=50, blank=True)
    telefon = models.CharField(max_length=25, blank=True)
    remark = models.CharField(max_length=250, blank=True)
    fio = models.CharField(max_length=50, blank=True)
    userid = models.DecimalField(unique=True, max_digits=65535, decimal_places=65535, blank=True,primary_key=True)
    changeonlogon = models.CharField(max_length=1, blank=True)
    userlocked = models.CharField(max_length=1, blank=True)
    login = models.CharField(max_length=300, blank=True)
    #crypto = models.CharField(max_length=300, blank=True)

    class Meta:
        managed = False
        db_table = 'zusers'

你想干什么?为什么要创建自定义身份验证后端和登录视图?您可以使用自定义用户模型,而无需重写后端和视图。你能发布你的zUser模型吗?你为什么要实现一个用户对象?Django可以很容易地使用自定义属性扩展现有的auth.User对象,例如telefon、userlocked等:Django如何知道db表中的属性“login”是自定义模型中的用户名?请阅读我发布的链接。它解决的第一个问题是:USERNAME\u字段:一个字符串,描述用户模型上用作唯一标识符的字段的名称。好的,那么同样的问题是如何处理密码:在db中是userpass,在model中是password