(生鲜项目)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)
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实现商品列表页的更多相关文章
- (生鲜项目)08. ModelSerializer 实现商品列表页, 使用Mixin来实现返回, 以及更加方便的ListAPIView, 以及分页的设置
第一步: 学会使用ModelSerializer, 并且会使用ModelSerializer相互嵌套功能 1. goods.serializers.py from rest_framework imp ...
- (生鲜项目)06. django的view实现商品列表页
使用原始的django的View来返回json格式的商品列表 目的是回顾一些django的基础知识, 好与后面的RESTful做对比 goods.views_base.py from django.v ...
- 5- vue django restful framework 打造生鲜超市 -完成商品列表页(上)
使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支付宝支付(暂不支持微信支付),支持手机短信验证码注册, ...
- 6- vue django restful framework 打造生鲜超市 -完成商品列表页(下)
Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页下 drf中的request和response drf对于django的 ...
- react 从商品详情页返回到商品列表页,列表自动滚动上次浏览的位置
现状:目前从商品详情页返回到商品列表页,还需要再去请求服务数据,还需要用户再去等待获取数据的过程,这样用户体验非常不好, 遇到的问题: 1:如何将数据缓存, 2:如何获取和保存列表滑动的高度, 3:判 ...
- 10 Flutter仿京东商城项目 商品分类跳转到商品列表传值 商品列表页面布局
pages下面新建: ProductList.dart import 'package:flutter/material.dart'; import '../services/ScreenAdaper ...
- 微信小程序 项目实战(三)list 列表页 及 item 详情页
1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载 ...
- ABP实践(3)-ASP.NET Core 2.x版本(从创建实体到输出api)简单实现商品列表及增删改
项目基于前两篇文章. 本章创建一个简单版的商品管理后台api,用到EF Core用code fist迁移数据创建数据库. 创建Goods实体 在领域层xxx.Core项目[新建文件夹Goods;文件夹 ...
- 【vue】饿了么项目-goods商品列表页开发
1.flex 属性是 flex-grow.flex-shrink 和 flex-basis 属性的简写属性. flex-grow 一个数字,规定项目将相对于其他灵活的项目进行扩展的量. flex-sh ...
随机推荐
- antd 表格隔行变色
rowClassName={(record, index) => { let className = 'light-row'; if (index % 2 === 1) className = ...
- leetcode解题报告(16):Move Zeroes
描述 Given an array nums, write a function to move all 0's to the end of it while maintaining the rela ...
- Codeforces Round #574 (Div. 2)
目录 Contest Info Solutions A. Drinks Choosing B. Sport Mafia C. Basketball Exercise D1. Submarine in ...
- 斜率dp的模板总结
#include<cstdio> #include<algorithm> using namespace std; long long sumt[40005],sum[4000 ...
- tsnr--基于vpp+dpdk的高性能防火墙
tsnr--基于vpp+dpdk的高性能防火墙 2019年01月31日 12:06:00 网络安全研发随想 阅读数:508 版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...
- XFTP 乱码
- 配置Spring Data Redis
事前准备 1.下载redis https://github.com/MicrosoftArchive/redis/releases/tag/win-3.2.100 2.下载redis可视化工具 htt ...
- E【中】假的字符串(trie+拓扑排序)
题目 E[中]假的字符串 做法 一个字符串能作为最小值最基础的条件为不能出现前缀字符串 我们需要确定一种每个字符的排名使得\(s\)作为最小值,另有很多字符串\(t\),与\(s\)第一个不相同的位置 ...
- Linux 如何通过某一台服务器调用执行多台远程服务器上的脚本,结果显示在本地?
现在都流行自动化运维了,可能目前技术不够,很多自动化工具还不怎么会用,所以本次只是通过ssh来实现功能. 说明:自己写的一个简单脚本,只是实现了基础功能,还有待优化. 一共三台机器: master:1 ...
- 什么是IO流
先看一段百度上的解释: 当然:如果你看不懂,那么你只需要记住下面3句话. 1. (1).我们知道,每个人家里喝的水都是从自来水厂来的,自来水厂的水又是从水源地来的, (2).水是通过水管来的. (3) ...