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': ''}
            
  • 相关阅读:
    Centos7下thinkphp5.0环境配置
    win10蓝牙鼠标无法连接,需pin码
    thinkphp5自带workerman应用
    php文件加密(screw方式)
    centos修改ssh默认端口号的方法
    修改CentOS ll命令显示时间格式
    在线编辑器的原理简单示例
    [转载]提升SQLite数据插入效率低、速度慢的方法
    linux 客户机挂载vitualbox共享文件夹
    virtualbox linux客户机中安装增强功能包缺少kernel头文件问题解决
  • 原文地址:https://www.cnblogs.com/lixiang1013/p/9139465.html
Copyright © 2011-2022 走看看