Django——视图——JsonResponse

目录

  1. JsonResponse
  2. Json和JsonResponse
  3. QuerySet转Json
  4. 模型转Json

 

  1. JsonResponse


    JsonResponse 是HttpResponse的子类,用于向客户端返回json数据。一般用于
    ajax请求。它的content-type缺省值为:application/json
    
    from django.http import JsonResponse #导包
    class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True,
    json_dumps_params=None, **kwargs)
    参数:
     data:可以是字典,如果safe设置为False,也可以是json序列化对象
     encoder:编码格式,缺省是
    django.core.serializers.json.DjangoJSONEncoder
     safe:缺省是True,如果传递字典给data,则报TypeError

     

  2. JsonJsonResponse


    系统模块自带的json和JsonResponse
    from django.http import JsonResponse
    import json as myJson
    #返回json数据
    def json(req):
     jsonStr = JsonResponse({'name':'zhangsan','age':18})
     jsonStr = myJson.dumps({'name':'zhangsan','age':18})
     return HttpResponse(jsonStr)
    json.dumps给ajax返回数据以后 js代码中需要将json数据使用Json.parse() 进行解
    析成js对象 JsonResponse会自动转换为js对象(少了异步Json.parse()的转换)

     

  3. QuerySetJson


    QuerySet转Json
    def courselist(req):
     courses = Course.objects.all() #QuerySet
     data = {'course':list(courses.values())} #查询结果集QuerySet转字典
     return JsonResponse(data) #传字典给JsonResponse
    # 返回数据格式
    {'course': [{'cname': '计算机组成原理', 'cid': 1}, {'cname': '英语',
    'cid': 2}, {'cname': '数学', 'cidame': 'c语⾔程序设计', 'cid': 4},
    {'cname': 'python从⼊⻔到精通', 'cid': 5}]}
    def courselist(req):
     courses = Course.objects.all()
     data = json.dumps(list(courses.values())) #查询结果集QuerySet转
    Json字符串,序列化
     return JsonResponse(data,safe=False) #safe必须设置为False
    # 返回的数据格式
    [{"cname": "\u8ba1\u7b97\u673a\u7ec4\u6210\u539f\u7406", "cid": 1},
    {"cname": "\u82f1\u8bed", "cid": 2}, {"cname": "\u6570\u5b66", "cid":
    3}, {"cname": "c\u8bed\u8a00\u7a0b\u5e8f\u8bbe\u8ba1", "cid": 4},
    {"cname": "python\u4ece\u5165\u95e8\u5230\u7cbe\u901a", "cid": 5}]

     

  4. 模型转Json


    class Course(models.Model):
     cname = models.CharField(max_length=50)
     cid = models.AutoField(primary_key=True)
     # 给模型添加to_dict⽅法
     def to_dict(self):
     return dict([(key, self.__dict__[key]) for key in
    self.__dict__.keys() if key != "_state"])
    # 视图函数
    def courseshow(req):
     course = Course.objects.get(pk=1) # 返回的是对象,不是QuerySet
     return JsonResponse(course.to_dict())

     

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值