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

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

最新文章

  1. Java中的异常-Throwable-Error-Exception-RuntimeExcetpion-throw-throws-try catch
  2. mysql中如何嵌套使用insert和select
  3. 绘制dot 图
  4. POJ1068——Parencodings
  5. bzoj1025: [SCOI2009] 游戏 6
  6. jquery 获取select选中的值
  7. 求余区间的求和类问题 离线+线段树 HDU4228
  8. c++学习笔记---05--- C++输出输入小结
  9. SpringMVC---CookieValue
  10. Java基本语法-----java注释
  11. DELPHI中build和compile有什么区别?
  12. Tecplot: Legend和图像中 Dashed/Dash dot/Long dash 等虚线显示没有区别的问题
  13. kubernetes学习笔记之十一:kubernetes dashboard认证及分级授权
  14. PL/SQL中复制中文再粘贴出现乱码问题的解决【转】
  15. (转)spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务
  16. 【Linux】rpm常用命令及rpm参数介绍
  17. 图像检索:RGBHistogram+欧几里得距离|卡方距离
  18. linux -- 服务开机自启动
  19. 判断js中数据类型 的最短代码
  20. nginx只允许域名访问,禁止ip访问

热门文章

  1. multimap 小例子
  2. JVM与外界通过数据通道进行数据交换
  3. php -- 魔术方法 之 自动加载:__autoload()
  4. 【BZOJ】1673: [Usaco2005 Dec]Scales 天平(dfs背包)
  5. loadruner11 socket脚本-10053错误
  6. js获取表单数据
  7. LinCode落单的数
  8. redis的简单操作
  9. Oracle数据库列出所有表名SQL语句
  10. windows mysql初始化