首页
学习
活动
专区
圈层
工具
发布

Django+Vue开发生鲜电商平台之8.商品详情页功能实现

可以看到,当已经存在收藏时再重复添加,就会返回non_field_errors错误,是在两个及以上字段联合验证失败时返回错误信息的关键字段,前端在接收后可以进行相应处理。...2.DRF权限验证 通常,仅进行身份验证或标识不足以获取信息或代码。为此,请求访问的实体必须具有授权。权限与身份验证和限制一起,确定是否应准予请求访问或拒绝访问。...权限检查始终在视图的开始处运行,然后再允许执行其他任何代码,通常会使用request.user和request.auth属性中的身份验证信息来确定是否应允许传入请求。...可以看到,先在DRF后台增加收藏,然后在Postman中模拟访问获取到JWT后再删除,显然,只能删除用户自己的收藏,而不能删除其他用户的收藏。...3.前端Vue实现收藏功能 GenericAPIView有一个属性为lookup_field,用于执行单个模型实例的对象查找的模型字段,即查询单一数据库对象时使用的条件字段,默认为pk,即主键。

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

    DjangoRESTframework(补充)

    serializers.HyperlinkedRelatedField(label='图书', read_only=True, view_name='books-detail') 指明 view_name 参数 ,以便 DRF...ModelSerilalizer ModelSerializer 与常规 Serilaizer 相同,提供了 基于模型类自动生成一系列字段 基于模型类自动为Serializer生成validators...在试图中可以调用该方法获取详情信息的模型类对象。 若详情访问的模型类对象不存在,会返回404。...继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin 视图集 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中...P\d+)/$', BookInfoViewSet.as_view({'get': 'retrieve'}) ] action属性 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的

    2.9K30

    django rest framework serializers解读

    serializers.fieild 我们知道在django中,form也有许多field,那serializers其实也是drf中发挥着这样的功能。我们先简单了解常用的几个field。...) class GameRecord(serializers.Serializer): score = IntegerField(validators=[multiple_of_ten]) 当然,drf...提供的validators还有很好的功能:UniqueValidator,UniqueTogetherValidator等 UniqueValidator: 指定某一个对象是唯一的,如,用户名只能存在唯一...还有一个小问题:我们在上面提到ModelSerializer需要解决的第二个问题中,其实还有一种情况,就是某个字段属于指定model,但不能获取到相关数据。   ...SerializerMethodField( )也可以解决这个问题,只要在自定义的方法中实现相关的逻辑即可!

    2.2K10

    DjangoRestFramework,序列化组件、视图组件

    model=models.Book fields = "__all__"    # 注意先把下面这些注释掉,不然由于get和post请求我们用的都是这个序列化组件,会出现多对多变量冲突的问题...UniqueValidator 单独唯一 validators=[UniqueValidator(queryset=UserProfile.objects.all()) UniqueTogetherValidator...validators = [UniqueTogetherValidator(queryset=UserFav.objects.all(),fields=('user', 'course'),message...要么你将这个名字改成别的名字,2.要么去数据库表中将这个字段设置一个null=True,但是第二种方式肯定是不太好的,记住,当你获取数据时,使用这个序列化组件,即便是这个字段的名字和数据表中字段名字相同,也是没有问题的...,只有在用户提交数据保存的时候才会有问题,所以最好的解决方式就是加read_only属性,并且改一下字段名字,不要和数据表中这个字段的名字相同 publish_name = serializers.CharField

    3K20

    Volcano火山:容器与批量计算的碰撞

    而在调度方面,Volcano 又对场景进行了细分、归类,并提供了相关的方案及算法;同时也为这些功能提供了调度框架,方便用户对调度器进行扩展。...如何与库伯内特斯达成这样的行为是一个悬而未决的问题。支持跨越多个集群的队列可能也很有用,在这种情况下,这是一个关于数据应该放在哪里以及etcd是否适合存储队列中的所有作业或pod的问题。...考虑到Kubernetes中的多用户模型,使用名称空间来区分不同的用户, 每个命名空间都将配置一个权重,作为控制其资源使用优先级的手段。...根据相应的作业及资源信息动态更新share值。...其它动作插件的实现方式也类似,即根据需要创建整体的流程;将带有选择属性的问题转换为算法插件。 ? Volcano直播课:大神带你飞 ?

    2.4K20

    DRF系列总结一:DRF是啥?为啥子要用?

    但是视图函数很自然会写成下面这个样子: image.png 校验逻辑和业务功能很容易耦合到一起,视图函数也很容易被“搞大”,很容易出现重复代码多,函数过长,不好维护等问题。...除此之外,接口地址的命名,接口返回格式等都需要额外规范来统一。...、Permissions负责权限校验、Routers负责路由自动注册、通过重写框架定义的函数,还可以统一接口返回格式及异常处理等。...通过Django+DRF,我们还可以很快速的配置出一套Django模型的CRUD接口,将一些开发工作变成配置工作,借助一些DRF周边工具,如django_filters,可以快速实现模型数据的过滤类接口...概念性的东西和问题就总结到这里了,感兴趣的同学可以先把Tutorial 走一遍,熟悉下DRF的基本用法。

    10.4K114

    drf框架serializers中ModelSerializer类简化序列化和反序列化操作

    is_delete') # 刨除某些字段 # depth = 1 # 跨表自动深度(展示外键表的所有字段) 注意点 其中fields与exclude不能共存 depth不能控制显示字段,与外键相关的表会全部显示出来...二.利用模型类中的方法进行指导字典的生成 例如有两个模型A与B,他们的c字段有外键关联 modles.py class B(models.Model): name = models.CharField...model=A #这里导入A会把A里面的所有名称空间存在的都进行导入 fields=('b_name') 四.ModelSerializer对于反序列话约数条件设置及只读只写属性设置...'min_length': '太短' } } } 只读只写属性设置...框架自带的Response 有添加修改相关操作 class BookAPIView(APIView): def post(self, request, *args, **kwargs):

    1.7K20

    drf框架中所有视图及用法

    0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带的views类 drf框架中最基础的视图类:views.APIView drf框架中工具视图:generics GenericAPIView...UpdateModelMixin: partial_update 单局部改 DestroyModelMixin:destroy 单删 viewsets视图集 上述视图都是基于django自带的views进行相关方法的分装...- 可以从mixins那继承功能,也可以自定义功能 ViewSet:与模型类无关或不是标准模型类接口 - 一般都是自定义功能 三.generics中GenericAPIView使用 将 queryset...和 serializer_class 封装成类属性,提供了三个方法 self.get_queryset() :获取所有 self.get_object() :获取根据pk获取单个 self.get_serializer

    2.2K30

    第 16 篇:别再手动管理接口文档了

    因为很多接口的信息其实在代码中已有体现,人们自然而然就想到能否直接从写好的代码中自动提取相关信息来生成文档,这样改了代码,接口文档也会自动更新,上面说的两个问题就都可以解决了。...例如我们可以看到 GET /posts/{id}/ 这个接口的响应参数,其中大部分有中文信息的描述,我们可以推断,这些说明都是 drf-yasg 自动从定义在 Post 模型各字段的 verbose_name...除了在序列化器(Serializer)、模型(Model)里面添加。...随着为其添加更多信息,告诉 drf-yasg 这是一个返回资源列表的接口,问题也就顺便解决了。...如果你在使用过程中遇到了问题,首先尝试分析问题的原因,然后顺藤摸瓜去找到相关的源码,看看库的内部是如何处理你所遇到的问题的,这样就可以针对性地给出解决方案了,这篇教程中列出的很多问题以及最后给出的解决方案

    2.3K20

    Flask框架在Python面试中的应用与实战

    在Python面试中,对DRF的理解与实际应用能力是衡量候选人Web服务开发能力的重要指标。本篇博客将深入浅出地探讨DRF面试中常见的问题、易错点以及应对策略,并结合实例代码进行讲解。...一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF中的作用,介绍基于类的视图(ViewSet、GenericViewSet)与视图集(ViewSets)的概念,以及如何关联到URL。...序列化器(Serializers):阐述序列化器如何定义数据结构、验证与序列化/反序列化数据,以及关联模型(ModelSerializer)的使用。...路由与URL配置路由器(Router):说明路由器如何根据ViewSet自动创建API路由,以及如何自定义路由命名和视图动作。...相关的问题挑战。

    71210

    重点内容回顾-DRF

    重点内容回顾-DRF 1. on_delete on_delete是定义模型类中外键的一个选项。 on_delete选项指明的是主表删除数据的时候,对于外键引用的表数据如何处理。...2.进行数据库的相关查询。 5.5.2视图基类 5.5.2.1APIView 是View类的子类,在View类的基础上添加了一些额外的功能。...5.6视图集 5.6.1概念 将操作同一组资源的处理方法(API接口)放在同一个类中 5.6.2注意点 1.视图集中的处理方法不再以请求方法命名,而是以对应的操作(action)名称命名:list/create...5.6.5视图集对象的action属性 视图集对象的action属性是一个字符串,我们可以根据action获取所要执行的是哪一种操作。...团队开发注意事项 浅谈密码加密 Django框架中的英文单词 Django中数据库的相关操作 DRF框架中的英文单词

    3.5K20

    django 入门:通用视图类重构视图

    作者:Kuky_xs 博客:https://www.jianshu.com/p/8cdf099e974f 1 正文 《django入门:环境及项目搭建》 《django入门:数据模型》 《django入门...:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图...,通过复写该方法,改变默认行为 def get_queryset(self): # 类视图中,从 url 捕获的命名组参数值保存在实例的 kwargs 中,是一个字典...# 非命名组参数值保存在实例的 args 中,是一个列表 category = get_object_or_404(Category, pk=kwargs.get('pk'))...优化分页列表 最后我们列下 Paginator 常用属性结束 django 的入门教程,接下来会有 DRF 的入门教程,django 算是其基础吧,DRF 实现了前后端分离,刚好适合我这种 Android

    1.4K20

    Django REST Framework-如何使用过滤器

    DRF 提供了很多有用的功能,其中之一就是过滤器(filters)。过滤器是一种机制,它可以让你在获取资源时对它们进行过滤。在 DRF 中,你可以使用内置的过滤器或者编写自定义的过滤器。...这些过滤器可以用于所有的 DRF 视图,包括基于函数的视图和基于类的视图。你只需要将过滤器添加到视图的 filter_backends 属性中就可以了。...'] range_fields = {'price': ['exact', 'lte', 'gte']}在这个例子中,我们创建了一个名为 BookViewSet 的视图集合,它使用了 Book 模型和...我们将 SearchFilter、OrderingFilter 和 RangeFilter 过滤器添加到了 filter_backends 属性中,以便我们可以使用这些过滤器来对 Book 模型进行搜索...如果你需要更多关于 DRF 过滤器的信息,你可以参考 DRF 官方文档中的相关章节。

    3.4K40

    Django REST framework 日志(重写drf_api_logger)

    Django REST framework 日志 默认的drf-api-logger没有保存用户并且没有获取日志的接口 本文通过重写drf-api-logger增加访问用户及获取日志的接口 并且增加定时器删除日志...DRF_API_LOGGER_DATABASE = True # 是否记录到数据库 DRF_API_LOGGER_SIGNAL = True # 是否发送信号 DRF_API_LOGGER_PATH_TYPE...跳过的命名空间(应用程序) DRF_API_LOGGER_METHODS = [] # 跳过的方法 DRF_API_LOGGER_STATUS_CODES = [] # 跳过的状态码 DRF_API_LOGGER_EXCLUDE_KEYS...在模型中添加用户字段 # models.py from django.contrib.auth import get_user_model User = get_user_model() ··· class...import TokenAuthentication class APILoggerMiddleware: ··· def __call__(self, request): ··· # 获取用户模型

    84920

    Django进阶篇 Rest framework (二)

    name:B,这里由于 B 类中没有实现 return_name 方法,实例化 B 得到 b 之后,会调用父类 A 中的 return_name 方法,hasattr 方法会查找类中是否有 name 属性...,这里虽然在类 A 中没有,会向下找 B 类中是否有 name 属性,然后返回 'name:' + getattr(self, 'name', None),也就是 name: "b"。...在这个简单的子类方法重写父类方法,再使用 drf 的认证,权限等组件是会经常对父类中的方法重写,从而实现功能。...这样的继承虽然可以实现功能,但是有一个很明显的问题,那就是在面向对象中,一定要指明一个类到底是什么。...为解决这个问题,可以引用 Mixin 模式: 这样就解决了上面的问题,也许你会发现,这其实没有什么变化,只是在类的命名加上了以 Mixin 结尾,其实这是一种默认的声明,可以知道 Nothing 类其实是一种马

    37240

    drf的接口文档生成与管理

    3.4 配置相关路由 3.5 访问查看 3.6 说明 4、drf-yasg(Swagger升级版) 4.1 drf-yasg介绍 4.2 安装drf-yasg库 4.3 配置app 4.4 配置路由...可以按照右边的指引通过安装coreapi-cli,通过命令行操作访问接口文档 2、对于视图集ViewSet中的retrieve名称,在接口文档中叫做read 3、接口文档中参数Description需要在模型类或序列化器类的字段中以...help_text选项定义,例如 在模型类中定义 class EnvironmentView(models.Model): ....../django-rest-swagger查看更多相关说明 4、drf-yasg(Swagger升级版) 4.1 drf-yasg介绍 参考drf-yasg官网,drf-yasg是基于Swagger和OpenAPI...库 在操作下面的步骤前请将第3节swagger相关内容全部注释或还原 pip3 install drf-yasg pip3 freeze > requirements.txt 4.3 配置app INSTALLED_APPS

    5.6K10

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

    需要解决的问题 DRF 暴露DELETE方法一旦被执行,就需要操作软删除,把is_deleted字段设置为True。...简而言之: drf找不到删除的数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django的模型(Model)中操作数据库的能力...显然,默认的模型Manager并不能解决我们的问题,所以我们需要自定义模型的Manager。...我们需要把它挂载到需要的模型上。 我们格局打开,将拥有is_deleted属性的模型抽离成抽象模型基类,凡是继承此类的都自带这个Manager。...即: drf找不到删除的数据 drf执行删除是软删除 Admin 首先再刚刚代码基础上,我们启用Admin,进入后台看看效果。

    3.2K40

    DRF视图详解:从基础视图到通用视图实践指南

    一、基础视图 (APIView)APIView 是 DRF 中所有视图的基类,继承自 Django 的 View,并添加了 DRF 特有的功能(如认证、权限、限流等)。...为了解决这个问题,DRF 提供了通用视图。二、通用视图 (Generic Views)DRF 的通用视图基于 "Mixin 组合" 思想,将常用功能封装成可复用的组件,通过继承组合实现复杂功能。...属性名 说明 queryset 视图使用的基础查询集,用于获取模型实例...需设置此属性或重写 get_serializer_class() 方法。lookup_field 用于查询单个对象的模型字段,默认值为 'pk'(主键)。...数据查询相关方法get_queryset(self):返回视图使用的查询集,是获取数据的主要入口。

    31410
    领券