zoukankan      html  css  js  c++  java
  • queryset转JSON的使用方法

    原理:
      1,queryset类型的读取方式与字典类似,但并非字典,它内部的值都是OBJECT对象。那么JSON是无法序列化对象的。
      2,利用values()和values_list()方法,将queryset转换成字典和列表形式的存储方式。PS:这样还不行,还有一步要做。
      3,再将转换完的queryset转换成list列表。 注意:上面的转换不是转换成字典或列表,而是字典和列表的数据存储形式。
      4,这样,通过JsonResponse就可以序列化了,重要一点:必须加入safe=False 参数。(因为咱们序列化的是一个列表)
      (解释 safe :这个参数被设置为:False ,那data可以填入任何能被转换为JSON格式的对象,比如list, tuple, set。 默认的safe 参数是 True. 如果你传入的data数据类型不是字典类型,那么它就会抛出 TypeError的异常。)

    视图函数中部分代码:

     1 if request.is_ajax():
     2   id = request.GET.get('id')
     3   article_list = Article.objects.values().filter(user__department__pk=id)#queryset不能json序列化,是因为queryset中是对象obj.需要转换成字典
     4   ret_list = list(article_list)
     5 return JsonResponse(ret_list, safe=False)

    前端AJAX中的代码:

    <script>
      $('.showlist').click(function () {
        $.ajax({
          url:"",
          type:'get',
          data:{
            id:$(this).val(),
            },
          success:function (data) {
    
            console.log(data[0]['nid'])  
            }
         })
      })
    </script>
  • 相关阅读:
    PHP数组操作,数组排序,数组元素操作,数组元素定位
    提高PHP编程效率的53个要点
    javascript的一些简单的应用
    数字时钟
    一个限定变量范围的小技巧
    windows编程学习——1 关闭窗口不退出
    比木马NB多了
    模拟时钟
    恶搞程序——黑屏
    用白色画笔再画一遍,代替擦除
  • 原文地址:https://www.cnblogs.com/sly27/p/10474883.html
Copyright © 2011-2022 走看看