第一步: 环境配置

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)
goods_front_image=serializers.ImageField()

然后配置settings

# 解决 1.11.3版本下使用APIview会报'CSRFCheck' object has no attribute 'process_request'的问题, 这么设置之后, goods的login就不会跳转
所以完美的解决办法是: https://stackoverflow.com/questions/54609495/django-csrfcheck-object-has-no-attribute-process-request
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES": []
}

最后访问网页

再验证一个goods页面的login能否使用, 我这里出了小BUG, 我登录后能够重定向回这个页面,说明账号密码验证是成功了的

但是重定向回goods页面后,这里仍然显示Log in, 而不是 admin, 看上面 解决 1.11.3版本下使用APIview会报'CSRFCheck' object has no attribute 'process_request'的问题,

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

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

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

    第一步: 学会使用ModelSerializer, 并且会使用ModelSerializer相互嵌套功能 1. goods.serializers.py from rest_framework imp ...

  2. (生鲜项目)06. django的view实现商品列表页

    使用原始的django的View来返回json格式的商品列表 目的是回顾一些django的基础知识, 好与后面的RESTful做对比 goods.views_base.py from django.v ...

  3. 5- vue django restful framework 打造生鲜超市 -完成商品列表页(上)

    使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, ...

  4. 6- vue django restful framework 打造生鲜超市 -完成商品列表页(下)

    Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页下 drf中的request和response drf对于django的 ...

  5. react 从商品详情页返回到商品列表页,列表自动滚动上次浏览的位置

    现状:目前从商品详情页返回到商品列表页,还需要再去请求服务数据,还需要用户再去等待获取数据的过程,这样用户体验非常不好, 遇到的问题: 1:如何将数据缓存, 2:如何获取和保存列表滑动的高度, 3:判 ...

  6. 10 Flutter仿京东商城项目 商品分类跳转到商品列表传值 商品列表页面布局

    pages下面新建: ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper ...

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

    1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载 ...

  8. ABP实践(3)-ASP.NET Core 2.x版本(从创建实体到输出api)简单实现商品列表及增删改

    项目基于前两篇文章. 本章创建一个简单版的商品管理后台api,用到EF Core用code fist迁移数据创建数据库. 创建Goods实体 在领域层xxx.Core项目[新建文件夹Goods;文件夹 ...

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

    1.flex 属性是 flex-grow.flex-shrink 和 flex-basis 属性的简写属性. flex-grow 一个数字,规定项目将相对于其他灵活的项目进行扩展的量. flex-sh ...

随机推荐

  1. maven-setting.xml文件详解

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  2. sql server if exists用法

    if exists用法     if exists 判断表中的内容是否存在     IF EXISTS(SELECT FROM proprice_sheet WHERE vndcode = @vndc ...

  3. Oracle 与 postgreSQL 事务处理区别(多版本与undo区别)

    2015年左右,因为工作需要用MongoDB.CouchBase这两种文档型数据库,时不时到这两个数据库官网上查资料.报BUG.时常可以在MongoDB官网上看到这样一些新闻,“某某企业成功将MySQ ...

  4. RESOURCE SUMMARY

    I dont know where to start so searched the net and get a lot of free videos, my plan is to watch the ...

  5. selenium鼠标操作

    #-*- coding:utf-8 -*- import time from selenium import webdriver from selenium.webdriver.common.acti ...

  6. select选中

    比如<select class="selector"></select>    1.设置value为“全部“的项选中  复制代码代码如下:   $(&quo ...

  7. HttpClient学习(二)—— MinimalHttpClient源码解析

    依赖关系 方法 class MinimalHttpClient extends CloseableHttpClient { //连接管理器 private final HttpClientConnec ...

  8. java定时案例

    好久没写笔记了,变懒了! java定时运行的三个案例: 一, 通过sleep方法来达到定时任务的效果 public class testTime { public static void main(S ...

  9. 切换node版本,node-sass安装报错

    一.问题 经常在开发过程中,会遇到切换node环境的情况,这时候切换之后,npm安装不了node-sass,有可能是之前把node-sass安装地址修改了,导致翻墙翻不了,所以安装不了. 二.解决 1 ...

  10. raid卷性能测试

    #RAID卷 独立磁盘冗余阵列RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术.组成磁盘阵列的不同方式成为R ...