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': ''}
            
  • 相关阅读:
    (一)python 简单网页爬虫
    环形队列的应用
    AutoResetEvent 和 ManualResetEvent 多线程应用
    委托 和 事件
    Action 和 Func 的用法以及区别
    IIS 配置缓存
    IIS 发布双证书
    函数中返回局部变量的问题
    python函数2-函数参数
    Python基础语法6-冒泡排序
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/9139465.html
Copyright © 2011-2022 走看看