1. 程式人生 > >47)django-以put和delete方式提交數據

47)django-以put和delete方式提交數據

json move col 需要 from pos ali ror location

一:說明

  同一個頁面以ajax實現增刪改查,對應方法post,delete,put,get,

  其中delete和put方式提交的數據在request.body中需要序列化處理。

二:示例

#模板提交數據
    function host_group_modify(thr) {
    //更新數據

    $.ajax({
        url: "{% url "hostgroup" %}",
        type: "put",
        headers: {"X-CSRFtoken": csrftoken},
        data: $("#form_host_group_edit
").serialize(), dataType: "json", success: function (thr) { if (thr.status) { location.reload(); } else { //第二次轉換JSON var errors = JSON.parse(thr.errors); //顯示alert $(".alert").removeClass("
hide"); var text = "" for (i in errors) { text += errors[i][0].message + ";"; } $(".show_error").text(text) } } }) #views中處理 def put(self,request): """修改主機組""" data=request_body_serialze(request) hostgroup_obj
=models.HostGroups.objects.filter(id=data.get("id")).first() hostgroup_form_obj=forms.HostGroupFrom(data,initial=hostgroup_obj) if hostgroup_form_obj.is_valid(): models.HostGroups.objects.filter(id=data.get("id")).update(**data) else: self.ret["status"] = False self.ret["errors"] = hostgroup_form_obj.errors.as_json() return HttpResponse(json.dumps(self.ret)) #quertdict轉成普通字典 # _*_ coding:utf-8 _*_ __author__ = "lixiang" from django.http.request import QueryDict def request_body_serialze(request): #對request.body做QuertDict編碼轉換處理 #如果不做數據處理:格式b‘id=49&name=%E4%B8%AD&name_cn=&comment=‘ #頁面中提交的中文“中”,變成%E4%B8%AD querydict=QueryDict(request.body.decode("utf-8"),encoding="utf-8") response_dict={} try: for key,val in querydict.items(): response_dict[key]=val except: pass return response_dict #處理結果 #處理前 <QueryDict: {id: [49], name: [中天], name_cn: [‘‘], comment: [‘‘]}> #處理後 {id: 49, name: 中天, name_cn: ‘‘, comment: ‘‘}

47)django-以put和delete方式提交數據