[ajax] 带文件ajax请求后端
html
{#// AJAX提交注册的数据#}
$("#reg-submit").click(function () {
var formData = new FormData();
formData.append("username", $("#id_username").val());
formData.append("password", $("#id_password").val());
formData.append("pic", $("#id_pic")[0].files[0]);
formData.append("csrfmiddlewaretoken", $("[name='csrfmiddlewaretoken']").val());
$.ajax({
url: "/register/",
type: "post",
{#ajax传文件加参数#}
processData: false,
contentType: false,
data: formData,
success:function (data) {
if (data.status){
{# 有错误就展示错误#}
{#// console.log(data.msg);#}
{#// 将报错信息填写到页面上#}
$.each(data.msg, function (k,v) {
// console.log("id_"+k, v[0]);
// console.log($("#id_"+k));
$("#id_"+k).next("span").text(v[0]).parent().parent().addClass("has-error");
})
}else {
location.href = data.msg;
}
}
})
});
{#// 将所有的input框绑定获取焦点的事件,将所有的错误信息清空#}
$("form input").focus(function () {
$(this).next().text("").parent().parent().removeClass("has-error");
})
views
def register(request):
if request.method == "GET":
reg_obj = RegForm()
return render(request, "register.html", {"reg_obj": reg_obj})
else:
ret = {"status": 0, "msg": ""}
reg_obj = RegForm(request.POST, request.FILES)
if reg_obj.is_valid():
# file = reg_obj.cleaned_data["pic"]
# with open(f"pics/{file.name}", "wb") as f:
# for chunk in file.chunks():
# f.write(chunk)
models.UserInfo.objects.create_user(**reg_obj.cleaned_data)
ret["msg"] = "/index/"
return JsonResponse(ret)
else:
ret["status"] = 1
ret["msg"] = reg_obj.errors
return JsonResponse(ret)