(生鲜项目)07. api view实现商品列表页

第一步: 环境配置

1. DRF官网: https://www.django-rest-framework.org/

仔细查看自己当前的python版本以及django版本是否支持DRF, 然后就看看哪些支持的模块还没有下载, 由于之前安装过xadmin了, 所以这里正常情况下还有coreapi, pygments, django-guardian没有安装, 在虚拟环境中去安装就行了

: 如果在安装coreapi的时候报错, 并且提示utf-8 decode错误, 那么就去修改pip的编码格式为gbk(这个暂时放这儿, 我还没遇到过这个错误)

然后 pip uninstall MarkupSafe coreapi , 然后再重新安装

2. 配置与DRF相关的url, 与用APIview写good.view函数

from django.conf.urls import url,include
import xadmin
from MxShop.settings import MEDIA_ROOT
from django.views.static import serve
from rest_framework.documentation import include_docs_urls

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"),

       # 生成DRF文档的配置
       url(r‘^docs/‘, include_docs_urls(title="慕学生鲜")),
       # DRF登录配置
       url(r‘^api-auth/‘, include(‘rest_framework.urls‘)),

]

别忘记注册

INSTALLED_APPS = [
    ...
    ‘rest_framework‘,
]

接着是goods.view

from .serializers import GoodsSerializer
from rest_framework.views import APIView
from rest_framework.response import Response

from .models import Goods

# APIview继承了View
class GoodsListView(APIView):
    """
    List all snippets, or create a new snippet.
    """

    def get(self, request, format=None):
        goods = Goods.objects.all()[:10]
        goods_serializer = GoodsSerializer(goods, many=True)  # many:是否是querrySet对象
        return Response(goods_serializer.data)

最后是 goods.serializers (serializers模块就是起到了Form表单的作用)

from rest_framework import serializers

class GoodsSerializer(serializers.Serializer):
    name = serializers.CharField(required=True, max_length=100)
    click_num = serializers.IntegerField(default=0)

然后配置settings

# 解决 1.11.3版本下使用APIview会报‘CSRFCheck‘ object has no attribute ‘process_request‘的问题
REST_FRAMEWORK = {
    "DEFAULT_AUTHENTICATION_CLASSES": []
}

最后访问网页

-----------  over  -----------

原文地址:https://www.cnblogs.com/jiangzongyou/p/12085202.html

时间: 2025-01-09 12:01:39

(生鲜项目)07. api view实现商品列表页的相关文章

(生鲜项目)08. ModelSerializer 实现商品列表页, 使用Mixin来实现返回, 以及更加方便的ListAPIView, 以及分页的设置

第一步: 学会使用ModelSerializer, 并且会使用ModelSerializer相互嵌套功能 1. goods.serializers.py from rest_framework import serializers from goods.models import Goods, GoodsCategory # 让goods的category字段全量显示 class CategorySerializer(serializers.ModelSerializer): class Met

(生鲜项目)19. ViewSet实现商品详情页接口

第一步: 前期分析 1.商品详情页包括轮播图,详情,富文本 2.对于轮播图这种有多个值的外键, 应该再另外设计一个serializer表 3.写代码, 代码很简单 goods.views.py # RetrieveModelMixin的功能是帮我们完成url的配置, /goods/id, 通过输入id就可以拿到某个商品的详情 class GoodsListViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.Gene

ecshop实现商品列表页属性筛选区品牌筛选以LOGO形式展示

很多时候ecshop分类页的品牌都是以名称的形式显示的,下面ECSHOP开发中心的技术和大家说说ecshop 如何实现商品列表页属性筛选区品牌筛选以LOGO形式展示 1.修改 category.php 文件,将(大概220行) 找到 1 $sql = "SELECT b.brand_id, b.brand_name, COUNT(*) AS goods_num ". 替换成 1 $sql = "SELECT b.brand_id,b.brand_logo, b.brand_n

ecshop模板将商品列表页属性筛选区的品牌以LOGO形式显示

ecshop模板将商品列表页属性筛选区的品牌以LOGO形式显示 商品列表页属性筛选区品牌以LOGO形式显示1.修改 category.php 文件将(大概215行) $sql = "SELECT b.brand_id, b.brand_name, COUNT(*) AS goods_num ". 修改为 $sql = "SELECT b.brand_id,b.brand_logo, b.brand_name, COUNT(*) AS goods_num ". 把商品

让ECSHOP商品列表页和商品详细页分类树跟首页一样

如何让商品列表页或商品详情页的分类树都跟首页一样,也是显示全部所有的分类呢?修改方法:1.商品列表页修改方法:打开category.php 文件将$smarty->assign('categories',       get_categories_tree($cat_id));修改为$smarty->assign('categories',       get_categories_tree());2.商品详情页修改方法:将$smarty->assign('categories',   

微信小程序 项目实战(三)list 列表页 及 item 详情页

1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载中...', // 状态 list: [], // 数据列表 type: '', // 数据类型 loading: true // 显示等待框 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { // options 为 board页传来的

在ECSHOP商品列表页和搜索页面,最后出现空商品的解决办法

有客户购买了我们的ecshop模板后,自己做了大量的修改和改动,后来出现了商品列表页面和搜索页面出现了多一个商品的问题.没有商品数据,但是多显示了一个商品的样式.下面就由我们68ecshop为大家解决一下这个问题吧!解决的方法如下:<!– {if $goods.goods_id} –> <!– {/if} –>代码框起来即可解决.

【vue】饿了么项目-goods商品列表页开发

1.flex 属性是 flex-grow.flex-shrink 和 flex-basis 属性的简写属性. flex-grow 一个数字,规定项目将相对于其他灵活的项目进行扩展的量. flex-shrink 一个数字,规定项目将相对于其他灵活的项目进行收缩的量. flex-basis 项目的长度.合法值:"auto"."inherit" 或一个后跟 "%"."px"."em" 或任何其他长度单位的数字.

商品列表页一次添加多个规格

可能题目的表述不是特别清晰,具体有一下截图看这会比较明显 页面上的功能描述1. 当页面加载完成后,需要根据不同规格的商品刷新出对应规格商品的价格,2.重置默认数量,这个功能在input标签中设置默认的value值即可,或者添加一个js函数,重置对应class集合中的值,这个不多说,比较简单,3.点击添加购物车,需要把例如上图中的不同规格中的商品能全部添加到购物车 解题思路,要求1,这个任务比较简单,由于这种方式,后台里的商品规格选项必须用单选按钮来做,否则页面效果不容易实现具体要实现什么样式自己