django 使用form验证用户名和密码

Posted mysterious

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 使用form验证用户名和密码相关的知识,希望对你有一定的参考价值。

form验证可以减少查询数据库,所以代码先预先验证,有问题可以返回给前端显示

1.在users文件夹下新建forms.py文件,用来验证用户名和密码是否为空,密码长度是否大于6

# -*- coding: utf-8 -*-
# 作者:神秘藏宝室
# 日期:2018/12/30 21:56
from django import forms


class LoginForm(forms.Form):
    username = forms.CharField(required=True)
    password = forms.CharField(required=True, min_length=6)

2.修改views.py下的LoginView的逻辑,当form出问题返回给前端login_form内容

class LoginView(View):
    def get(self, request):
        return render(request, 'login.html', {})

    def post(self, request):
        login_form = LoginForm(request.POST)
        if login_form.is_valid():
            user_name = request.POST.get("username", "")
            pass_word = request.POST.get("password", "")
            user = authenticate(username=user_name, password=pass_word)
            if user is not None:
                login(request, user)
                return render(request, "index.html")
            else:
                return render(request, "login.html", {"msg": u"用户名或者密码错误!"})
        else:
            return render(request, "login.html", {"login_form": login_form})

3.前端显示错误,显示出错误内容

<div class="form-group marb20 {% if login_form.errors.username %}errorput{% endif %}">
                        <label>用&nbsp;户&nbsp;名</label>
                        <input name="username" id="account_l" type="text" placeholder="手机号/邮箱" />
                    </div>
                    <div class="form-group marb8 {% if login_form.errors.password %}errorput{% endif %}">
                        <label>密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码</label>
                        <input name="password" id="password_l" type="password" placeholder="请输入您的密码" />
                    </div>
                    <div class="error btns login-form-tips" id="jsLoginTips">{% for key,error in login_form.errors.items %} {{ error }} {% endfor %}{{ msg }}</div>

以上代码可以实现,错误选项的红框标记,错误问题显示

输入为空

技术分享图片

密码长度小于6

技术分享图片

正常的用户名密码错误,查询数据库后错误显示

技术分享图片

以上是关于django 使用form验证用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章

django实现密码加密的注册(数据对象插入)-结合forms表单实现表单验证

django 基于 form 验证 确认密码的注册

Django用户注册验证不起作用

Python自动化开发学习22-Django下(Form)

django登录注册验证之密码包含特殊字符,确认密码一致实现

22.Django(form组件)