Django 登录 显示正确密码的密码不正确



我正在制作一个登录表单并使用Django 1.8 Python 3.5

但是我得到有效的用户名和密码的密码不正确,我该怎么办?

我制作了一个简单的登录表单,但无法找出错误,请帮助

这是我的login/forms.py

from django import forms
from mainpage.models import User
from django.contrib.auth import (
    authenticate,
    login,
    logout,
    get_user_model,
)
class UserLoginForm(forms.Form):
        username=forms.CharField(max_length=40)
        password=forms.CharField(max_length=40,widget=forms.PasswordInput)

        def clean(self,*args,**kwargs):
            username=self.cleaned_data.get("username")
            password=self.cleaned_data.get("password")
            user_qs = User.objects.filter(username=username)
            if user_qs.count() == 0:
                raise forms.ValidationError("The user does not exist")
            else:
                if username and password:
                     user = authenticate(username=username, password=password)
                     if not user:
                        raise forms.ValidationError("Incorrect password")
                     if not user.is_active:
                         raise forms.ValidationError("This user is no longer active")
            return super(UserLoginForm,self).clean(*args,**kwargs)

这是我的login/views.py

from django.shortcuts import render,redirect
from .forms import UserLoginForm
from django.contrib.auth import login as auth_loginwa
from django.contrib.auth import (
    authenticate,
    logout,
    get_user_model,
)
def login_view(request):
    form1=UserLoginForm(request.POST or None)
    print(request.user.is_authenticated())
    if form1.is_valid():
        username=form1.cleaned_data.get("username")
        password=form1.cleaned_data.get("password")
        user=authenticate(username=username,password=password)
        auth_loginwa(request,user)
        if(request.user.is_authenticated()):
            return redirect("home2")
    context= {
        "form1": form1,
    }
    return render(request, "login.html",context)

这是我的mainpage/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)

正如评论中所问的

这是我的主页/管理员.py

from django.contrib import admin
from .models import User
admin.site.register(User)

这些是我的不同用户的图像

超级用户vaibhav2(使用命令python创建 manage.py 创建超级用户(具有加密密码也登录成功

用户 asd 手动创建(无加密密码见图(

https://imgur.com/EOewk41

您需要创建一个自定义的 ModelAdmin 类来对内置类进行子类化。

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User
class CustomUserAdmin(UserAdmin):
    model = User
admin.site.register(User, CustomUserAdmin)

Daniel Roseman是对的。您需要将定义的模型指向用户管理员以启用加密。将以下代码片段添加到您的admin.py文件中

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

admin.site.register(User, UserAdmin)

最新更新