zoukankan      html  css  js  c++  java
  • 47)django-以put和delete方式提交数据

    一:说明

      同一个页面以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': ''}
            
  • 相关阅读:
    12
    Kafka设计解析(二)- Kafka High Availability (上)
    Apache kafka 工作原理介绍
    Kafka设计解析(一)- Kafka背景及架构介绍
    【转载】MySQL之权限管理
    【转载】漫谈HADOOP HDFS BALANCER
    【转载】HDFS 上传文件不均衡和Balancer太慢的问题
    【转载】mysql binlog日志自动清理及手动删除
    【转】Typora极简教程
    更新Linux服务器时间
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/9139465.html
Copyright © 2011-2022 走看看