循序渐进PYTHON3(十三) --1-- DJANGO之FORM表单
在上一次的代码上做出进一步修改,使之能在页面上显示报错信息。
views.py
from django.shortcuts import render,HttpResponsefrom django import formsimport json# Create your views here.classInputForm(forms.Form):# 下面使用的变量名必须和html中input标签的name值相同username = forms.CharField(required=True)password = forms.CharField(required=True)def login(request):if request.method =='POST':result ={'status':False,'message':None}obj =InputForm(request.POST)ret = obj.is_valid()# print(ret,obj.data)if ret:print(obj.clean())result['status']=Trueelse:# print(obj.errors)error_str = obj.errors.as_json()result['message']= json.loads(error_str)returnHttpResponse(json.dumps(result))return render(request,'login.html')
login.html
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.error-msg{color:red;}</style></head><body><div><div><inputtype="text"name="username"/></div><div><inputtype="password"name="password"/></div><inputtype="button"value="提交"onclick="DoSubmit();"/></div><scriptsrc="/static/jquery-2.1.4.min.js"></script><script>functionDoSubmit(){var input_dic ={};$('input').each(function(){var v = $(this).val();var n = $(this).attr('name');input_dic[n]= v;});console.log(input_dic);$.ajax({url:'/login/',type:'POST',data:input_dic,dataType:'json',success:function(rdata){if(rdata.status){location.href ='/index/';}else{$.each(rdata.message,function(k,v){console.log(k,v[0].message);var tag = document.createElement('span');tag.className ='error-msg';tag.innerText = v[0].message;$('input[name="'+ k +'"]').after(tag);})}},error:function(){}})}</script></body></html>
效果图:


浙公网安备 33010602011771号