Django的serializer序列化model

来自CloudWiki
跳转至: 导航搜索

视图层views_base

由于数据库中部分字段如img地址,日期时间等,不能序列化,因此对代码做如下改动

vi apps/goods/views_base.py :

# -*- 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]
        #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_list.append(json_dict)
        # from django.forms.models import model_to_dict
        # for good in goods:
        #     json_dict = model_to_dict(good)
        #     json_list.append(json_dict)
 
        
        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)






测试

浏览器打开:http://10.0.0.30:8000/goods/

[{"model": "goods.goods", "pk": 1, "fields": {"category": 20, "goods_sn": "", "name": "\u65b0\u9c9c\u6c34\u679c\u751c\u871c\u9999\u8106\u5355\u679c\u7ea6800\u514b", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 232.0, "shop_price": 156.0, "goods_brief": "\u98df\u7528\u767e\u9999\u679c\u53ef\u4ee5\u589e\u52a0\u80c3\u90e8\u9971\u8179\u611f\uff0c\u51cf\u5c11\u4f59\u70ed\u91cf\u7684\u6444\u5165\uff0c\u8fd8\u53ef\u4ee5\u5438\u9644\u80c6\u56fa\u9187\u548c\u80c6\u6c41\u4e4b\u7c7b\u6709\u673a\u5206\u5b50\uff0c\u6291\u5236\u4eba\u4f53\u5bf9\u8102\u80aa\u7684\u5438\u6536\u3002\u56e0\u6b64\uff0c\u957f\u671f\u98df\u7528\u6709\u5229\u4e8e\u6539\u5584\u4eba\u4f53\u8425\u517b\u5438\u6536\u7ed3\u6784\uff0c\u964d\u4f4e\u4f53\u5185\u8102\u80aa\uff0c\u5851\u9020\u5065\u5eb7\u4f18\u7f8e\u4f53\u6001\u3002", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/1_P_1449024889889.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 2, "fields": {"category": 7, "goods_sn": "", "name": "\u7530\u7136\u725b\u8089\u5927\u9ec4\u74dc\u6761\u751f\u9c9c\u725b\u8089\u51b7\u51bb\u771f\u7a7a\u9ec4\u725b", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 106.0, "shop_price": 88.0, "goods_brief": "\u524d\u817f+\u540e\u817f+\u7f8a\u6392\u51718\u65a4\uff0c\u539f\u751f\u6001\u5927\u5c71\u653e\u7267\u7f8a\u7f94\uff0c\u66fe\u7ecf\u7684\u7687\u5ba4\u8d21\u54c1\uff0c\u592e\u89c6\u63a8\u8350\uff0c2005\u5e74\u5317\u4eac\u62db\u5f85\u5168\u7403\u8d22\u91d1\u9996\u8111\u3002\u4e94\u5c42\u4e13\u7528\u5305\u88c5\u7bb1+\u771f\u7a7a\u5305\u88c5+\u51b0\u888b+\u4fdd\u9c9c\u7bb1+\u987a\u4e30\u51b7\u94fe\u53d1\u8d27\uff0c\u8def\u9014\u4fdd\u8d28\u671f8\u5929", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/2_P_1448945810202.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 3, "fields": {"category": 15, "goods_sn": "", "name": "\u9163\u7545\u5bb6\u5ead\u83f2\u529b\u725b\u639210\u7247\u6fb3\u6d32\u751f\u9c9c\u725b\u8089\u56e2\u8d2d\u5957\u9910", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 286.0, "shop_price": 238.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/7_P_1448945104883.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 4, "fields": {"category": 20, "goods_sn": "", "name": "\u65e5\u672c\u849c\u84c9\u7c89\u4e1d\u6247\u8d1d270\u514b6\u53ea\u88c5", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 156.0, "shop_price": 108.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/47_P_1448946213263.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 5, "fields": {"category": 7, "goods_sn": "", "name": "\u5185\u8499\u65b0\u9c9c\u725b\u80891\u65a4\u6e05\u771f\u751f\u9c9c\u725b\u8089\u706b\u9505\u98df\u6750", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 106.0, "shop_price": 88.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/10_P_1448944572085.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 6, "fields": {"category": 21, "goods_sn": "", "name": "\u4e4c\u62c9\u572d\u8fdb\u53e3\u725b\u8089\u5377\u7279\u7ea7\u80a5\u725b\u5377", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 90.0, "shop_price": 75.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/4_P_1448945381985.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 7, "fields": {"category": 23, "goods_sn": "", "name": "\u4e94\u661f\u773c\u8089\u725b\u6392\u5957\u99108\u7247\u88c5\u539f\u5473\u539f\u5207\u751f\u9c9c\u725b\u8089", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 150.0, "shop_price": 125.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/8_P_1448945032810.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 8, "fields": {"category": 7, "goods_sn": "", "name": "\u6fb3\u6d32\u8fdb\u53e3120\u5929\u8c37\u9972\u725b\u4ed4\u9aa84\u4efd\u539f\u5473\u751f\u9c9c", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 31.0, "shop_price": 26.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/11_P_1448944388277.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 9, "fields": {"category": 22, "goods_sn": "", "name": "\u6f6e\u9999\u6751\u6fb3\u6d32\u8fdb\u53e3\u725b\u6392\u5bb6\u5ead\u56e2\u8d2d\u5957\u991020\u7247", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 239.0, "shop_price": 199.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/6_P_1448945167279.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}, {"model": "goods.goods", "pk": 10, "fields": {"category": 20, "goods_sn": "", "name": "\u7231\u98df\u6d3e\u5185\u8499\u53e4\u547c\u4f26\u8d1d\u5c14\u51b7\u51bb\u751f\u9c9c\u725b\u8171\u5b50\u80891000g", "click_num": 0, "sold_num": 0, "fav_num": 0, "goods_num": 0, "market_price": 202.0, "shop_price": 168.0, "goods_brief": "", "goods_desc": "<p><img src=\"/media/goods/images/2_20170719161405_249.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161414_628.jpg\" title=\"\" alt=\"2.jpg\"/></p><p><img src=\"/media/goods/images/2_20170719161435_381.jpg\" title=\"\" alt=\"2.jpg\"/></p>", "ship_free": true, "goods_front_image": "goods/images/9_P_1448944791617.jpg", "is_new": false, "is_hot": false, "add_time": "2020-06-24T18:01:07"}}]