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

Django(55)GenericAPIView源码分析

8个方法,接下来一个个分析 类属性 queryset = None serializer_class = None lookup_field = ‘pk’ lookup_url_kwarg = None...如果没什么逻辑,可以直接写在视图的类属性中,如果逻辑比较复杂,也可以重写get_queryset方法用来返回一个queryset对象。...如果重写了get_queryset,那么以后获取queryset的时候就需要通过调用get_queryset方法。因为queryset 这个属性只会调用一次,以后所有的请求都是使用他的缓存。...serializer_class serializer_class用来验证和序列化数据的。也是可以通过直接设置这个属性,也可以通过重写get_serializer_class来实现。...您不太可能想要覆盖此方法,但如果您想将配置的过滤后端应用到默认查询集,您可能需要从列表视图自定义get_object 方法中调用它。

36910

DRF二级视图GenericAPIView

通常,您必须设置此属性覆盖该get_queryset()方法。如果您要覆盖视图方法,请务必调用get_queryset()而不是直接访问此属性。...serializer_class 应该用于验证和反序列化输入以及序列化输出的序列化器类。通常,您必须设置此属性覆盖该get_serializer_class()方法。...URL conf 包含与此值对应的关键字参数。如果未设置,则默认使用lookup_field. 分页 以下属性用于在与列表视图一起使用时控制分页。...方法 列表视图与详情视图通用 get_queryset(self) 返回视图使用的查询集,是列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写,例如: def get_queryset...(self): return BookInfo.objects.all() get_serializer_class(self) 返回序列化器类,默认返回serializer_class,可以重写

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

第 7 篇:文章详情的 API 接口

视图集中 serializer_class 属性已经被指定为了 PostListSerializer,那 PostRetrieveSerializer 应该指定在哪呢?...类似于视图集类的 queryset 属性和 get_queryset 方法的关系, serializer_class 属性的值也可以通过 get_serializer_class 方法返回的值覆盖,因此我们可以根据不同的...destory 因此,我们在视图集中重写 get_serializer_class 方法,写入我们自己的逻辑,就可以根据不同请求,分别获取相应的序列化器了: class PostViewSet(...省略其他属性方法 def get_serializer_class(): if self.action == 'list': return PostListSerializer...更好的做好是,给视图集加一个属性,用于配置 action 和 serializer_class 的对应关系,通过查表法查找 action 应该使用的序列化器。

1K30

WPF 自定义控件入门 可重写的各个方法属性的意义

本文整理在 WPF 里面,自定义控件,非用户控件时,可以重写基类的许多方法属性,这些方法属性的作用和含义。...方便让大家了解到自定义控件时,有哪些方法属性可以被重写重写时的正确实现以及其影响是什么 这是有伙伴问我,他在自定义控件时,发现了自己的自定义控件里面的子控件的 Loaded 事件不触发,命中测试不进入...,附加属性 本文将使用直接继承 FrameworkElement 的自定义控件类型为例子,由于在 WPF 里面有着新手比较友好的设计,在自己定义的一层(视觉树概念上的层级)控件上,各个事件方法基本都能被符合预期正常触发...机制里面的,无法让 F2 的事件和重写方法被符合预期的调用 接下来咱来修改一下 F1 类型,重写 VisualChildrenCount 属性和 GetVisualChild 方法 修改 F1 的代码如下...也就是说仅仅只有 重写 VisualChildrenCount 属性和 GetVisualChild 方法对此需求来说还是不够。

1.3K20

DRF 视图组件

: -GenericAPIView 继承了APIView,封装了一些属性方法,跟数据库打交道 -queryset = None # 指定序列化集 -serializer_class...# 返回序列化类 ,后期可能重写 demo: # 指定序列化集 queryset = models.Book.objects.all() # 指定序列化类 serializer_class...= 'pk' lookup_url_kwarg = None get_queryset()方法可以重写,如果我们需要在一个视图类内操作另外表模型,来指定序列化的数据 class BookViewDetail...,对应retrieve()方法 DestroyModelMixin:删除一条API,对应destroy()方法 注意:CreateModelMixin扩展类提供了更高级的方法,可以通过重写来校验数据存入...重写' .as_view() ',以便它接受一个' actions '关键字执行 将HTTP方法绑定到资源上的动作。

90110

drf之请求、响应、视图

类似于Django中标准的request.POST和 request.FILES属性,但提供如下特性: 1 包含了解析之后的文件和非文件数据 2 包含了对POST、PUT、PATCH请求方式解析后的数据...提供的关于序列化器使用的属性方法 属性serializer_class  指明视图使用的序列化器 方法get_serializer_class(self) : 当出现一个视图类中调用多个序列化器时...,那么可以通过条件判断在get_serializer_class方法中通过返回不同的序列化器类名就可以让视图方法执行不同的序列化器对象了。...返回序列化器类,默认返回serializer_class,可以重写。...方法: get_queryset(self) :返回视图使用的查询集,主要用来提供给Mixin扩展类使用,是列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写 get_object

2.1K20

DjangoRESTframework(补充)

= BookInfoSerializer queryset 指明该视图在查询数据时使用的查询集 serializer_class 指明该视图在进行序列化反序列化时使用的序列化器 3.定义路由 from...=True queryset参数 包含 read_only=True 参数时,该字段将不能用作反序列化使用 包含 queryset 参数时,将被用作反序列化时参数校验使用 from booktest.serializers...to_representation 方法 序列化器的每个字段实际都是由该字段类型的to_representation方法决定格式的,可以通过重写方法来决定格式。...支持定义的属性 authentication_classes 列表元祖,身份认证类 permissoin_classes 列表元祖,权限检查类 throttle_classes 列表元祖,流量控制类...返回序列化器类,默认返回serializer_class,可以重写,例如: def get_serializer_class(self): if self.request.user.is_staff

2.2K30

Django Serializer HiddenField隐藏字段实例

serializer.HiddenField(default=serializer.CurrentUser()) 在用Dajngo RestFramework时, 有时候需要这么一个场景,前端不需要传一个多个字段...,这些字是直接根据用户登录信息判断自动赋值的,如果用mixin和viewset进行搭配写接口,要么重写create, update等方法,要么就是在serializer_class时就定义默认值,而第二种方法明显简单一些...具体看代码 # 假如我定义了一个serliazer,shop和status都是自动判断后赋值的 # 用HiddenField定义字段,default方法来写具体赋值函数 # default方法是一个类,...需要重写set_context的方法 from rest_framework.compat import ( InvalidTimeError, MaxLengthValidator, MaxValueValidator...Game.objects.filter( Q(shop=self.request.user.shop) | Q(shop__com_circle=self.request.user.shop)) def get_serializer_class

1.2K20

DRF框架学习(四)

使用场景: 重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。...lookup_value_regex = '\d+' 2.1视图集额外处理方法url配置项的生成 需要给对应的方法添加action装饰器。...IsAuthenticated,) ... 5.2自定义权限(了解即可) 如需自定义权限,需继承 rest_framework.permissions.BasePermission父类,并实现以下两个任何一个方法全部...8.1使用方法: 在类视图中设置filter_backends,使用 rest_framework.filters.OrderingFilter过滤器,REST framework会在请求的查询字符串参数中检查是否包含了...ordering参数,如果包含了ordering参数,则按照ordering参数指明的排序字段对数据集进行排序。

2.7K40

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

显然,在手动添加新品之后,新品数据即同步,请求的参数中包含is_new=true。...为了在创建brand时只显示一级类别,在adminx.py中定义GoodsBrandAdmin类时重写了get_context()方法,其中获取到category字段只取category_type为1的数据...CreateModelMixin类的perform_create(serializer)方法,修改购物车数量重写UpdateModelMixin类的perform_update(serializer)方法...,删除购物车记录重写DestroyModelMixin类的perform_destroy(instance)方法,如下: class ShoppingCartViewSet(viewsets.ModelViewSet...DRF自带了限速功能,直接使用throttling进行限速即可实现,throttling与权限类似,它决定是否授权请求。

2.2K10

【愚公系列】2022年04月 Python教学课程 67-DRF框架之GenericAPIView

以下属性控制基本视图行为。 queryset:应用于从此视图返回对象的查询集。通常,必须设置此属性重写方法。...如果要重写视图方法,请务必调用而不是直接访问此属性,因为将评估一次,并且这些结果将缓存用于所有后续请求。 serializer_class:应用于验证和反序列化输入以及序列化输出的序列化程序类。...通常,必须设置此属性重写方法。 lookup_field:应用于执行各个模型实例的对象查找的模型字段。缺省值为 。...URL conf包含与此值对应的关键字参数。如果未设置,则默认使用与 相同的值。...queryset = BookInfo.objects.all() # 指定序列化器 serializer_class = BookSerializer def get

35620
领券