码迷,mamicode.com
首页 > 其他好文 > 详细

47)django-以put和delete方式提交数据

时间:2018-06-05 15:29:53      阅读:565      评论:0      收藏:0      [点我收藏+]

标签:增删改查   序列化   headers   csrf   erro   修改   pre   function   数据处理   

一:说明

  同一个页面以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方式提交数据

标签:增删改查   序列化   headers   csrf   erro   修改   pre   function   数据处理   

原文地址:https://www.cnblogs.com/lixiang1013/p/9139465.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!