django 的ajax 請求,使用form的驗證機制。

全部的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

相關文章
相關標籤/搜索