首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django+Vue开发生鲜电商平台之11.首页、商品数量、缓存和限速功能开发

api.js修改如下: //获取轮播图 export const bannerGoods = params => { return axios.get(`${local_host}/banners/`)...2.新品功能开发 在定义商品模型定义了is_new字段表示是否是新品,再实现新品功能需要用到该字段,直接使用Goods接口并在filters.py过滤器中定义即可,如下: class GoodsFilter...为了在创建brand只显示一级类别,在adminx.py中定义GoodsBrandAdmin类重写了get_context()方法,其中获取到category字段只取category_type为1的数据...视图类,新增商品到购物车重写CreateModelMixin类的perform_create(serializer)方法修改购物车数量重写UpdateModelMixin类的perform_update...retrieve和list方法,这主要是查询操作,对于新建、修改等操作一般是不能使用缓存的。

2.2K10

Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页和过滤

但是从代码中可以看到: 通过在新建列表、其元素为单个商品信息组成的字典,一个一个地添加,显得很麻烦,可进行改进; 有些字段不能直接用json.dumps()方法序列化,如datetime,会报错,如商品列表视图修改为如下...2.serializer序列化model 使用Django自带的model_to_dict()方法可以实现直接将模型数据转化为字典形式,但是对于DateTimeField、ImageField等字段还是无法序列化...如果报错__str__ returned non-string (type NoneType),可以通过退出登录后台管理或者修改自定义的用户模型的__str__()方法解决,具体可参考https://blog.csdn.net...,将get()请求转到list()方法、post()请求转到create()方法,还执行一些其他默认操作,以后添加其他模型的视图也直接添加一行代码router.register(r'xxx', XxxListViewSet...request.query_params代替了request.GET,有助于使代码库更加正确和明显,任何HTTP方法类型都可以包括查询参数,而不仅仅是GET请求。

5.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

Vue+Django2.0 REST framework 打造前后端分离的生鲜电商项目(五)商品列表页

小贴士: 在访问,如果没有在xadmin后台退出账号,有可能会报错: Django rest framework __str__ returned non-string (type NoneType)...在找的是AbstractUser的username字段(用户名),没找到所以报错 解决方法:将UserProfile表中的__str__方法改成返回username: 1 def __str__...request.query_params相当于django本身的request.GET。任何HTTP方法类型都可能包含查询参数,而不仅仅是GET请求。...parsers解析器,通过对应方法,解析传过来的各种类型数据。...django_filters.NumberFilter(name='shop_price', lookup_expr='lte') 8 #模糊查询,其中'contains'代表区分大小写,'icontains'代表区分大小写

4.8K61

Django+Vue开发生鲜电商平台之7.用户登录和注册功能

token采用全局设置,而在View中单独设置,settings.py如下: # DRF配置 REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend...在用户进行登录提交后,通过对用户名和密码进行比对,但是如果通过手机号码登录,就可能失败,因为登录obtain_jwt_token查询数据库默认查询的是用户名和密码,而未查询手机号码,因此需要自定义用户认证方法...create()方法中调用serializer.is_valid()需要加入参数raise_exception=True,这样在执行时如果is_valid()方法出错就会抛出异常,不会再向下执行,并且由...说明: 因为接口请求需要用POST方法,因此开始直接使用GET方法会失败,DRF提供了在页面直接用POST方法发送数据的功能,这对以后的测试提供了极大的方便。...,同时因为人为设定前端传递回来的手机号数据变量名为username而非mobile,因此需要在validate(attrs)方法中为attrs变量增加键为mobile的数据,并且要修改UserProfile

4.2K20

django优雅的实现软删除,支持Admin和DRF的软删除

需要解决的问题 DRF 暴露DELETE方法一旦被执行,就需要操作软删除,把is_deleted字段设置为True。...同样的,DRF对外操作的其他接口,如查询,修改操作,就不允许找到已经软删除的数据。 自带的Admin 既然是超级管理后台,那么就允许操作任何数据,包括已经软删除的,而不是列表找不到软删除的数据。...其实你在项目中无时刻不在使用Manager,还记得objects?也就是如:Book.objects.all()中的objects。有没有想过它到底是什么?...class ModelManager(models.Manager): # 重写get_queryset方法 def get_queryset(self): # 查询出所有的数据...使用DRF操作删除实际上调用的是mixins.DestroyModelMixin的destroy方法,具体执行删除的方法是perform_destroy。

2.1K40

让你的Django应用变DRY的几个最佳实践

DRY是Don't-Repeat-Yourself的缩写,是一种代码编写的原则,即不要重复自己的工作。我个人有些代码洁癖,凡是发现我需要复制粘贴代码的地方,就想着能怎样去除重复的工作。...def get_user(self, user_id): # 若通过浏览器访问则需要定义次方法,获取已登录的用户对象 # 若只有RESTful调用则跳过...在DRF中完成Authorization工作的就是DEFAULT_PERMISSION_CLASSES配置项,以及针对每个APIView配置的permission_classes,他是用来精确控制请求放对某一资源有无权限...二、自定义响应体 很多时候(如前端框架、开发SDK)对响应体的格式是有要求的,我看到大多数的实现只是用一个格式化的类去填充响应信息,但这种方法有两个缺点: 每次需要人为构造响应 无法适用于DRF的ModelViewSet...要达成这种效果,大致有两种途径: 写自定义中间件,修改响应格式 写自定义renderer 这里第一种途径有几处劣势: 在中间件处理rest_framework.response.Response已完成渲染

1.7K50

django和drf_类中的方法可以序列化么

update方法,所以我们使用的时候必须自己手动定义这2个方法 准备工作 1.新建一个项目drf_demo,在项目中新建一个appdrf_app,在app中新建一个文件urls.py,项目结构如下...write_only:当为True表示这个字段只能写,只有在新增数据或者更新数据的时候会用到。...比如我们的账号密码,只允许用户提交,后端是返回密码给前台的 required:当为True表示这个字段必填,填状态码会返回400 default:默认值,没什么好说的 allow_null:当为True...,允许该字段的值为空   之后我们又定义了局部钩子,校验特殊的字段,比如需求规定,用户的性别只能输入男和女,此时你就可以定义一个钩子,当然drf自动帮我们做了一些校验,比如需要的字段是int类型,你输入...请求和POST请求 GET请求 我们打开接口测试工具postman或者apifox,这里以apifox为例,输入127.0.0.1:8000/drf/student/,得到了以下结果 [ {

1.1K30

Django+JWT实现Token认证

对外提供API不用django rest framework(DRF)就是旁门左道?...这就需要通过一些方式对请求进行鉴权了 先来看看传统的登录鉴权跟基于Token的鉴权有什么区别 以Django的账号密码登录为例来说明传统的验证鉴权方式是怎么工作的,当我们登录页面输入账号密码提交表单后,...与记录的信息做对比以验证身份 Token的鉴权方式就清晰很多了,客户端用自己的账号密码进行登录,服务端验证鉴权,验证鉴权通过生成Token返回给客户端,之后客户端每次请求都将Token放在header里一并发送,服务端收到请求校验...Token的鉴权机制几乎已经成了前后端分离架构或者对外提供API访问的鉴权标准,得到广泛使用 JSON Web Token(JWT)是目前Token鉴权机制下最流行的方案,网上关于JWT的介绍有很多,这里细说...,只讲下Django如何利用JWT实现对API的认证鉴权,搜了几乎所有的文章都是说JWT如何结合DRF使用的,如果你的项目没有用到DRF框架,也不想仅仅为了鉴权API就引入庞大复杂的DRF框架,那么可以接着往下看

2.7K20

DRF学习笔记(一)

# 一、Django REST FrameWork 简介 使用 Django REST FramWork 能够让我们使用 Django 编写的后端 API 接口,更优雅的处理数据的 json 序列化和...# 二、序列化器的使用 # 1、介绍 序列化器是 DRF 当中的灵魂,因为有它的存在,能够帮助我们少写非常多的重复性代码,比如,当我们的应用当中有这样一个 Model : from django.db...views 代码进行改造了 # 三、Request 对象解析 当我们的视图层继承了 DRF 给我们提供的的 View DRF会给我们编写的视图函数传递一个 request对象,该对象是对 Django...这类似于标准的 request.POST 和 request.FILES 属性,但是该对象包含有独有的特性: 它包含了所有解析后的内容,包括文件类型和非文件类型的输入 它支持除了POST类型以外的其他HTTP方法的内容解析...详细信息,参考parsers documentation (opens new window) # 2、.query_params 属性 该属性使原生的 request.GET 更加具有语义化,这样写能够让开发者编写的代码能够更加容易阅读

61910

美多商城项目(五)

注意,cache_response装饰器既可以装饰在类视图中的get方法上,也可以装饰在REST framework扩展类提供的list或retrieve方法上。...但是这种方法比较麻烦,修改需要两步,先将原来的默认地址标记改为False,再将要设置默认地址的标记改为True。我们可以换一种方法:在用户表中添加一个字段。 用户表 ID(用户ID) ......self.get_serializer(...)创建序列化器对象,会向序列化器对象的context属性中补充request参数,可以通过 序列化器对象.context['request']来获取request...3.修改指定地址的数据。 4.返回修改地址序列化数据。 UpdateModelMixin中已经实现了update方法,而且满足我们的需求,所以我们可以写这个方法。...4.4.3C/S模型 Docker客户端只需向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并且返回结果。

1.2K30

DjangoRestFramework,restful规范、APIview、解析器组件、Postman等

请求就能找到类的get方法,post请求就能找到post方法,其内部有个dispatch方法来进行分发,这又怎么玩呢,看源码啦,从哪里看呢?...201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...GET /orders/2 HTTP/1.1 Accept: application/json       2.8.2 发生错误时的响应         发生错误时不要响应200状态码,有一种恰当的做法是...三 Django RestFramework(简称DRF) drf是django发展来的一个符合restful接口规范的一个东西,啥东西呢,就是django的一个app,还记得app是啥。...,还记得属性方法 return HttpResponse('POST')   源码看着比较复杂,这里我就不列举了,反正你要知道的是,我们的解析器的查找使用顺序是:     自己写的类里面的

2.5K20

Python进阶39-drf框架(一)

---- -多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。...,一个接口可以概括对该资源的多种操作方式 api.baidu.com/books | api.baidu.com/books/(pk) 5) 请求方式有多种,用一个url处理如何保证混乱...201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。...410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象,发生一个验证错误。..._request就是原生request # 2) 原生request对象的属性和方法都可以被drf的request对象直接访问(兼容) # 3) drf请求的所有url拼接参数均被解析到query_params

4K30
领券