在上一次的代码上做出进一步修改,使之能在页面上显示报错信息。

views.py
  1. from django.shortcuts import render, HttpResponse
  2. from django import forms
  3. import json
  4. # Create your views here.
  5. class InputForm(forms.Form):
  6. # 下面使用的变量名必须和html中input标签的name值相同
  7. username = forms.CharField(required=True)
  8. password = forms.CharField(required=True)
  9. def login(request):
  10. if request.method == 'POST':
  11. result = {'status':False, 'message':None}
  12. obj = InputForm(request.POST)
  13. ret = obj.is_valid()
  14. # print(ret,obj.data)
  15. if ret:
  16. print(obj.clean())
  17. result['status'] = True
  18. else:
  19. # print(obj.errors)
  20. error_str = obj.errors.as_json()
  21. result['message'] = json.loads(error_str)
  22. return HttpResponse(json.dumps(result))
  23. return render(request, 'login.html')
login.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .error-msg{
  8. color:red;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <div>
  14. <div>
  15. <input type="text" name="username" />
  16. </div>
  17. <div>
  18. <input type="password" name="password" />
  19. </div>
  20. <input type="button" value="提交" onclick="DoSubmit();"/>
  21. </div>
  22. <script src="/static/jquery-2.1.4.min.js"></script>
  23. <script>
  24. function DoSubmit() {
  25. var input_dic = {};
  26. $('input').each(function () {
  27. var v = $(this).val();
  28. var n = $(this).attr('name');
  29. input_dic[n] = v;
  30. });
  31. console.log(input_dic);
  32. $.ajax({
  33. url:'/login/',
  34. type:'POST',
  35. data:input_dic,
  36. dataType: 'json',
  37. success: function (rdata) {
  38. if(rdata.status){
  39. location.href = '/index/';
  40. }else{
  41. $.each(rdata.message, function (k,v) {
  42. console.log(k,v[0].message);
  43. var tag = document.createElement('span');
  44. tag.className = 'error-msg';
  45. tag.innerText = v[0].message;
  46. $('input[name="' + k + '"]').after(tag);
  47. })
  48. }
  49. },
  50. error: function () {
  51. }
  52. })
  53. }
  54. </script>
  55. </body>
  56. </html>
效果图:
 

循序渐进Python3(十三) --1-- django之form表单的更多相关文章

  1. Django的form表单

    html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...

  2. Django 11 form表单(状态保持session、form表单及注册实现)

    Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...

  3. 转载:Django之form表单

    转载: 一.使用form类创建一个表单 先定义好一个RegForm类: forms.py from django import forms # 导入forms类 class NameForm(form ...

  4. Django--分页器(paginator)、Django的用户认证、Django的FORM表单

    分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...

  5. 循序渐进Python3(十三) --0-- django之form表单

    django为我们提供了form表单验证功能,下面来学习一下: 武sir博客:http://www.cnblogs.com/wupeiqi/articles/5246483.html  创建了djan ...

  6. django之form表单验证

    django中的Form一般有两种功能: 输入html 验证用户输入 #!/usr/bin/env python # -*- coding:utf- -*- import re from django ...

  7. django中form表单的提交:

    一,关于表单: 表单在百度百科的解释:   表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...

  8. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

  9. Django的form表单之文件上传

    在生成input标签的时候可以指定input标签的类型为file类型 <!DOCTYPE html> <html lang="en"> <head&g ...

  10. 【django之form表单】

    一.构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method=&qu ...

随机推荐

  1. ARM汇编指令集3

    常用ARM指令1:数据处理指令 •数据传输指令  mov mvn       mov r1,  r0        @两个寄存器之间数据传递       mov       r1,  #0xff   ...

  2. ajax用json实现数据传输

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  3. 原创:Angular新手容易碰到的坑,随时更新,欢迎订阅

    在Angular群里回答新手问题一段时间了,有一些Angular方面的坑留在这里备查,希望能对各位有所帮助.这个文章将来会随时更新,不会单独开新章,欢迎各位订阅. Q1. <div ng-inc ...

  4. Agilent RF fundamentals (10) Mixer ,Phase domain and modulator

    1 Mixer characterization DC input Bias voltage Bias Current RF input Lo input IF output 2 mixer devi ...

  5. 【SQL查询】日期的转换_to_date/to_char

    1. 日期转换为字符 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; 2. 字符转换为日期 select to_date('200 ...

  6. 持久层框架:MyBatis 3.2(1)

    MyBatis 的前身就是 iBatis .是一个数据持久层(ORM)框架. iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架.iBATIS提供的持久 ...

  7. Delphi Xe4 游戏开发的技术选型.

    asphyre 是支持 FireMonkey的. 利用Firemonkey的跨平台接口.实现 win,mac,ios. 其它方案估计就得靠 FPC 了. 好处是多了输出Andriod的可能. zeng ...

  8. JavaScript中的二分法插入算法

    算法主体部分 var OnlineUser = { //list : 待查找的数组 //key : 待插入的值 //order : 数组的顺序 1:从小到大 0:从大到小 //start : 开始查找 ...

  9. HDU - 5297:Y sequence (迭代&容斥)

    Yellowstar likes integers so much that he listed all positive integers in ascending order,but he hat ...

  10. 接口测试基础——第一篇smtplib发送文字邮件

    现在我们就开始进入接口测试框架的知识准备阶段,今天是第一篇,很简单的,就是发送纯文字的电子邮件,会的童鞋可以忽略,不会的就多敲几遍,直到自己能敲出来为止~~ # coding: utf-8 impor ...