02django返回json的方法

view_base写法

# -*- coding: utf-8 -*-
__author__ = 'bobby'

from django.views.generic.base import View

from goods.models import Goods
# from django.views.generic import ListView


class GoodsListView(View):
    def get(self, request):
        """
        通过django的view实现商品列表页
        :param request:
        :return:
        """
        json_list = []
        goods = Goods.objects.all()[:10]


        import json
        from django.core import serializers
        json_data = serializers.serialize('json', goods)
        json_data = json.loads(json_data)
        from django.http import HttpResponse, JsonResponse
        return JsonResponse(json_data, safe=False)

demo

1.传统的 django view 返回json

  1. views_base.py
# _*_ coding: utf-8 _*_
__author__ = 'daxiahy'
__date__ = '2019/3/29 15:03'

from goods.models import Goods
from django.views.generic.base import View


class GoodsListView(View):
    def get(self, request):
        """
        通过django的view实现商品列表页
        :param request:
        :return:
        """
        json_list = []
        goods = Goods.objects.all()[:10]
        for good in goods:
            json_dict = {}
            json_dict["name"] = good.name
            json_dict["category"] = good.category.name
            json_dict["market_price"] = good.market_price
            # json_dict["add_time"] = good.add_time
            json_list.append(json_dict)

        from django.http import HttpResponse
        import json
        return HttpResponse(json.dumps(json_list), content_type="application/json")

urls.py

from goods.views_base import GoodsListView
    # 商品列表页
    url(r'^goods/$', GoodsListView.as_view(), name="goods-list"),

2通过django serializers返回json

# _*_ coding: utf-8 _*_
__author__ = 'daxiahy'
__date__ = '2019/3/29 15:03'

from goods.models import Goods
from django.views.generic.base import View


class GoodsListView(View):
    def get(self, request):
        """
        通过django的view实现商品列表页
        :param request:
        :return:
        """
        goods = Goods.objects.all()[:2]
        import json
        from django.core import serializers
        json_data =serializers.serialize("json", goods)
        json_data = json.loads(json_data)
        from django.http import JsonResponse
        return JsonResponse(json_data, safe=False)