全部的form都須要在後臺驗證,前臺驗證是不可靠的,django的驗證是後臺驗證,前臺提示錯誤信息。ajax
js驗證是在前臺的,無需發送消息給後臺,但安全性不可靠,強調的是用戶體驗。django
要求,使用彈出框,彈出框form也使用django的驗證。安全
製做一個form驗證的mixin,須要驗證的ajax請求繼承該mixinspa
class ValidMixin(object): def form_invalid(self, form): msg = { "success": "invalid", "form": form.errors } return JsonResponse(msg)
在ajax返回的js中code
$("form").ajaxSubmit({ success:function(data){ if (data["success"]=='success'){ handle_success(data) } else if (data["success"]=="invalid"){ hanlde_invalid(data) } else { handle_error(data) } }, error:function(data, status, e){ } }); function handle_success(data){ } function handle_invalid(data){ for (item in data["form"]){ if (data["form"][item]){ $("input[name='"+item+"']").after("<span style='color:#A94442'>"+data["form"][item]+"</span>") } } } function handle_error(data){ }
這樣,當後臺form驗證不經過,就能夠記錄信息,並在前臺進行提示。orm