Django view 实现商品列表页

来自CloudWiki
跳转至: 导航搜索

视图层views_base

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)

 

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

路由urs.py

[root@localhost mxshop]# cd mxshop

[root@localhost mxshop]# pwd

/root/mxshop/mxshop

vi urls.py

from django.conf.urls import url
from django.contrib import admin
import xadmin
from mxshop.settings import MEDIA_ROOT
from django.views.static import serve
from goods.views_base import GoodsListView
urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
    url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}),
    url(r'goods/$',GoodsListView.as_view(), name="goods-list")
]

测试

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

[{"name": "\u65b0\u9c9c\u6c34\u679c\u751c\u871c\u9999\u8106\u5355\u679c\u7ea6800\u514b", "category": "\u6839\u830e\u7c7b", "market_price": 232.0}, {"name": "\u7530\u7136\u725b\u8089\u5927\u9ec4\u74dc\u6761\u751f\u9c9c\u725b\u8089\u51b7\u51bb\u771f\u7a7a\u9ec4\u725b", "category": "\u6d77\u9c9c\u6c34\u4ea7", "market_price": 106.0}, {"name": "\u9163\u7545\u5bb6\u5ead\u83f2\u529b\u725b\u639210\u7247\u6fb3\u6d32\u751f\u9c9c\u725b\u8089\u56e2\u8d2d\u5957\u9910", "category": "\u53f6\u83dc\u7c7b", "market_price": 286.0}, {"name": "\u65e5\u672c\u849c\u84c9\u7c89\u4e1d\u6247\u8d1d270\u514b6\u53ea\u88c5", "category": "\u6839\u830e\u7c7b", "market_price": 156.0}, {"name": "\u5185\u8499\u65b0\u9c9c\u725b\u80891\u65a4\u6e05\u771f\u751f\u9c9c\u725b\u8089\u706b\u9505\u98df\u6750", "category": "\u6d77\u9c9c\u6c34\u4ea7", "market_price": 106.0}, {"name": "\u4e4c\u62c9\u572d\u8fdb\u53e3\u725b\u8089\u5377\u7279\u7ea7\u80a5\u725b\u5377", "category": "\u8304\u679c\u7c7b", "market_price": 90.0}, {"name": "\u4e94\u661f\u773c\u8089\u725b\u6392\u5957\u99108\u7247\u88c5\u539f\u5473\u539f\u5207\u751f\u9c9c\u725b\u8089", "category": "\u8fdb\u53e3\u751f\u9c9c", "market_price": 150.0}, {"name": "\u6fb3\u6d32\u8fdb\u53e3120\u5929\u8c37\u9972\u725b\u4ed4\u9aa84\u4efd\u539f\u5473\u751f\u9c9c", "category": "\u6d77\u9c9c\u6c34\u4ea7", "market_price": 31.0}, {"name": "\u6f6e\u9999\u6751\u6fb3\u6d32\u8fdb\u53e3\u725b\u6392\u5bb6\u5ead\u56e2\u8d2d\u5957\u991020\u7247", "category": "\u83cc\u83c7\u7c7b", "market_price": 239.0}, {"name": "\u7231\u98df\u6d3e\u5185\u8499\u53e4\u547c\u4f26\u8d1d\u5c14\u51b7\u51bb\u751f\u9c9c\u725b\u8171\u5b50\u80891000g", "category": "\u6839\u830e\u7c7b", "market_price": 202.0}]