首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django登录错误密码显示正确密码

问Django登录错误密码显示正确密码
EN

Stack Overflow用户
提问于 2018-03-05 17:11:35
回答 1查看 3.5K关注 0票数 0

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

但是我得到了不正确的密码的有效用户名和密码,我应该做什么?

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

这是我的login/forms.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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)

在评论中被问到

这是我的mainpage/admin.py

代码语言:javascript
复制
from django.contrib import admin
from .models import User
admin.site.register(User)

这些是给我不同用户的图片

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

用户asd手动创建(未加密密码见图像)

https://imgur.com/EOewk41

EN

回答 1

Stack Overflow用户

发布于 2018-03-07 10:52:16

丹尼尔·罗斯曼是对的。您需要将定义的模型指向UserAdmin以启用加密。将下面的片段添加到admin.py文件中

代码语言:javascript
复制
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User


admin.site.register(User, UserAdmin)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49115909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档