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

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

新增了对查询集(QuerySet)和序列化器(Serializer)的标准化管理,为数据操作提供了统一接口核心类属性GenericAPIView 通过类属性定义了视图的核心配置,这些属性决定了视图如何获取数据...lookup_field 用于查询单个对象的模型字段,默认值为 'pk'(主键)。若使用自定义字段,需确保视图和序列化器同步设置。...数据查询相关方法get_queryset(self):返回视图使用的查询集,是获取数据的主要入口。...,默认包含 request、view、format 信息,可用于在序列化器中访问请求数据。...get_paginated_response(self, data):返回分页格式的响应对象,配合分页功能使用。您正在阅读的是《Django从入门到实战》专栏!关注不迷路~

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

    在PHP中如何使用全局变量的方法详解

    有很多方法能够使这些数据成为全局数据,其中最常用的就是使用“global”关键字申明,稍后在文章中我们会具体的讲解到。...使用全局变量和“global”关键字 PHP默认定义了一些“超级全局(Superglobals)”变量,这些变量自动全局化,而且能够在程序的任何地方中调用,比如$_GET和$_REQUEST等等。...在开发的过程中,你可能会知道知道每一个全局变量,但大概一年之后,你可能会忘记其中至少一般的全局变量,这个时候你会为自己使用那么多全局变量而懊悔不已。 那么如果我们不使用全局变量,我们该使用什么呢?...,然后它(译者注:新注册的对象)就立即可以在所有的组件中调用。...> 正如你看到的,现在我们不再依靠任何全局变量了,而且我们完全让这些函数远离了全局变量。 结论 在本文中,我们演示了如何从根本上移除代码中的全局变量,而相应的用合适的函数和变量来替代。

    9.7K100

    Java 类和对象,如何定义Java中的类,如何使用Java中的对象,变量

    对象是一个你能够看得到,摸得着的具体实体    如何定义Java中的类:  1.类的重要性:所有Java程序都以类class为组织单元  2.什么是类:类是模子,确定对象将会拥有的特征(属性)和行为(方法...5    引用对象的方法:对象.方法       phone.sendMessage() ; //调用对象senMessage()方法  成员变量和局部变量  1.成员变量     在类中定义,用来描述对象将要有什么...  2.局部变量      在类的方法中定义,在方法中临时保存数据  成员变量和局部变量的区别  1.作用域不同:        局部变量的作用域仅限于定义他的方法        成员变量的作用域在整个类内部都是可见的...  2.初始值不相同:          Java会给成员变量一个初始值          Java不会给局部变量赋予初始值,必要初始化  3.在同一个方法中,不允许有同名局部变量;  在不同的方法中,...可以有同名局部变量  4.两类变量同名时,局部变量具有更高得优先级(就近原则)

    9.1K00

    从入门到精通Django REST Framework-(五)

    GenericAPIView 是 Django REST Framework (DRF) 中的一个基础视图类,它继承自 APIView,并添加了一些常用的功能,特别是与数据库模型交互的功能。...它是 DRF 中通用视图和视图集的基础,提供了查询、序列化、分页等常用操作的标准实现。本质上它是 DRF 中所有通用视图(如 ListAPIView、RetrieveAPIView 等)的基础。二....# 在视图方法中使用def get(self, request): books = self.get_queryset() serializer = self.get_serializer(...对象查找(lookup_field 和 lookup_url_kwarg)这两个属性控制如何从 URL 中获取单个对象。lookup_field:模型中用于查找对象的字段名,默认为 'pk'。...settings.py中可以全局配置分页:REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination

    50610

    django-rest-framewor

    2 解析器组件 (用来解析数据的请求的组件)   Django并不能处理请求协议为application/json编码协议的数据   注意: DRF解析器会封装到View中的parsers内,在视图函数被调用时...定义需要返回的字段(字段类型可以与model中的类型不一致,参数也可以调整),字段名称必须与model中的一致 在GET接口逻辑中,获取QuerySet 开始序列化:将QuerySet作业第一个参数传给序列化类...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法:在视图类中定义post方法 开始序列化:通过我们上面定义的序列化类,创建一个序列化对象,传入参数...retrieve,有一行instance = self.get_object(), 该方法在GenericAPIView中 至关重要的是拿到self.kwargs中的pk关键字,然后从queryset中拿到想要的数据...返回结果 5 认证组件   cookie和session两种方式可以保存用户信息,这两种方式不同的是cookie保存在客户端浏览器中,而session保存在服务器中,他们各有优缺点,配合起来使用,可将重要的敏感的信息存储在

    1.9K10

    Python进阶43-drf框架(五)

    # 完成数据的校验,会走序列化类的 全局钩子校验规则,校验得到登录用户并签发token存储在序列化对象中 核心源码:rest_framework_jwt.serializer.JSONWebTokenSerializer...ordering= ordering_fields = ['price'] 如何使用django-filter?...先在api目录下的filter.py文件中中自定义一个类 ## django-filter插件过滤器类 from django_filters.rest_framework import FilterSet...重点使用方法 ---- 自定义过滤字段 api目录下的filter.py文件中 ## django-filter插件过滤器类 from django_filters.rest_framework import...过滤插件:filter_class = CarFilterSet 5、自定义过滤器:自定义过滤类实现filter_queryset即可,根据筛选条件筛选后再返回queryset即可 使用: i)视图类添加过滤类

    3.5K20

    django 1.8 官方文档翻译: 3-4-2 内建显示视图

    的确,大多数来自Django开发新手 的问题是如何能使得通用视图的使用范围更广。...在一些三方的应用中,有更多通用视图的示例,或者你可以自己按需编写。 对象的通用视图 TemplateView确实很有用,但是当你需要 呈现你数据库中的内容时Django的通用视图才真的会脱颖而出。...当你处理 一个object或者queryset时,Django能够使用你定义对象显示用的自述名(verbose name,或者复数的自述名,对于对象列表)来填充上下文(context)。...然而,model参数并不是唯一能够指明视图要基于哪个对象进行操作的方法 – 你同样可以使用queryset参数来指定一个对象列表: from django.views.generic import DetailView...然而,通过使用queryset来定义一个过滤的对象列表,你可以更加详细 的了解哪些对象将会被显示的视图中(参见执行查询来获取更多关于查询集对象的更对信息,以及参见 基于类的视图参考来获取全部 细节)。

    1.9K40

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

    4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。...GenericAPIView.get_queryset() 重写此方法允许您以多种不同的方式自定义视图返回的查询集。...通用筛选器还可以在可浏览 API 和管理 API 中显示为 HTML 控件。...username', 'email', 'profile__profession'] 4.3 嵌套查找 对于 JSONField 和 HStoreField 字段,您可以使用相同的双下划线表示法根据数据结构中的嵌套值进行查找...如果使用多个搜索词,则仅当所有提供的词都匹配时,才会在列表中返回对象。 搜索行为可能会因在 前面加上各种字符而受到限制。search_fields “^”以搜索开头。 “=”完全匹配。

    2.9K30

    DRF框架学习(四)

    6.1 使用 DRF框架默认没有进行全局限流设置,但是提供了配置项,我们可以在配置文件中,使用 DEFAULT_THROTTLE_CLASSES 和 DEFAULT_THROTTLE_RATES进行全局配置...pip install django-filter 在配置文件中增加过滤后端的设置: INSTALLED_APPS = [ ......我们可以在配置文件中设置全局的分页方式,如: REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': '全局分页类>', 'PAGE_SIZE'...page=4 可以在子类中定义的属性: page_size 每页数目 pagequeryparam 前端发送的页数关键字名,默认为"page" pagesizequery_param 前端发送的每页数目关键字名...limit=100&offset=400 可以在子类中定义的属性: default_limit 默认限制,默认值与 PAGE_SIZE设置一直 limitqueryparam limit参数名,默认'limit

    3.3K40

    Django后台管理之Admin actions自定义

    当前的HttpRequest对象(即request) 被选择的对象(即QuerySet) 在应用中的admin.py文件中写入: def make_published(modeladmin, request...也就是: for obj in queryset: do_something_with(obj) 还可以设置一个简单易懂的简短描述(可以使用中文),用于代替生硬的函数名: def make_published...处理错误: 这其中,如果你能够预知在自定义的操作中可能产生的错误,请处理该错误,并通过django.contrib.admin.ModelAdmin.message_user()以友好的方式给予用户提示信息...多数情况下,我们会使用HttpResponseRedirect跳转到一个中间页面,并在GET方法的url中携带别选择的对象作为参数传递过去,然后在这个新的视图中接收这个参数,并编写具体的更加复杂的业务逻辑...在指定模型中禁用所有actions:设置ModelAdmin.actions为None。(这会连带全局actions一起禁用了。)

    2.4K50

    Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

    后面会详细讲解Django每一部分的使用方式和API了 本节内容 内置视图处理对象的定义 内置视图处理对象的使用 源代码分析 1....内置视图处理对象的定义 对于我们视图处理函数,从最原始的HttpResponse()来进行页面数据的输出,到render()函数进行模板页面的操作,已经是可以满足我们的需求了,但是Django赶脚还不够...视图对象的使用 经过上述的改造,我们可以看到视图处理函数已经变得非常的简洁,但是存在这样一个问题,IndexView处理类中的数据,我们可以看懂是通过get_queryset()函数进行查询的,然后自动复制给变量...我们可以在源代码中,看到各种操作的一些信息,官方注释用于使用对象数据来渲染详细信息页面的视图对象,继承的父类中,也定义了各种属性字段用于控制单个对象数据的展示操作 以上两个视图类,都间接继承了View...从基础文件view.py中,我们可以看到,各种视图模板的基础处理操作和视图类型的封装都有了简洁的定义,我们需要做的就是在项目中,继承这些Django已经封装好的对象,快捷的完成项目的开发。

    1.1K30

    Django Admin后台管理:高效开发与实践

    自定义字段:可以在自定义用户模型中添加额外的字段,如手机号码、地址等。 自定义认证后端:可以编写自定义的认证后端来处理特定的认证逻辑。...3.4 高级权限控制 对象权限:Django允许为模型的每个实例设置权限,这可以通过编写自定义权限类来实现。...权限检查:在视图或模板中,可以使用user.has_perm()或user.has_perms()来检查用户是否具有特定权限。...3.5 用户界面定制 自定义登录界面:可以创建自定义的登录视图和模板来替换默认的登录界面。 自定义用户注册:可以编写自定义的用户注册视图和表单。...自定义密码重置:可以实现自定义的密码重置流程,包括发送重置邮件和处理重置请求。 通过这一章的学习,你将能够掌握Django的认证系统,并学会如何管理用户、组和权限,以及如何自定义用户模型和用户界面。

    1.3K10

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

    一、常见面试问题核心组件与工作流程视图(Views):解释视图在DRF中的作用,介绍基于类的视图(ViewSet、GenericViewSet)与视图集(ViewSets)的概念,以及如何关联到URL。...序列化器(Serializers):阐述序列化器如何定义数据结构、验证与序列化/反序列化数据,以及关联模型(ModelSerializer)的使用。...路由与URL配置路由器(Router):说明路由器如何根据ViewSet自动创建API路由,以及如何自定义路由命名和视图动作。...认证(Authentication):介绍DRF支持的多种认证方式(如Token、Session、OAuth等),以及如何配置全局或视图级别的认证。...二、易错点与避免策略序列化器验证遗漏:确保在序列化器中充分定义验证规则,使用validate_方法对关联字段、自定义逻辑进行验证,防止脏数据进入数据库。

    42710

    重点内容回顾-DRF

    ,validators=[about_django]) b.在序列化器中定义一个方法 validate_,来对 字段进行验证。...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询。...举个例子:True表示的是xxx/\/action方法名,而False表示的是xxx/action方法名 6.高级功能 6.1分页 我们可以在配置文件中设置全局的分页方式 REST_FRAMEWORK...DRF框架默认全局认证方案设置,也可以对其进行修改,还可以指定某个视图的认证方案。...权限:区分的是认证与未认证的用户。可以进行DRF框架默认全局权限设置,也可对其进行修改,还可以指定某个视图的权限控制设置,甚至可以自定义权限控制类。权限和认证通常是一起使用的。

    3K20

    在Django中实现使用userid和密码的自定义用户认证

    在本教程中,我们将详细介绍如何在Django中实现自定义用户认证,使用包含userid字段的CustomUser模型以及标准的密码认证。本教程假设您已经对Django有基本的了解并且已经设置好了项目。...概述设置和配置定义包含userid字段的CustomUser模型。创建自定义认证后端,用于使用userid认证用户。配置Django设置以使用自定义认证后端。...配置Django设置在settings.py中配置Django设置,以使用自定义认证后端。...通过以下步骤,您完成了:定义包含额外字段的自定义用户模型。创建自定义认证后端以使用userid进行用户认证。配置Django设置以使用自定义认证后端。...开发登录API视图,并使用AJAX请求在前端页面中集成用户认证功能。这种设置允许您根据特定项目需求定制Django中的认证过程,增强用户登录功能的安全性和易用性。

    1.9K20

    DRF进阶之DRF视图和常用功能

    DRF视图和常用功能 DRF视图 DRF视图类介绍 在DRF框架中提供了众多的通用视图基类与扩展类,以简化视图的编写。...request对象不再是Django默认的HttpRequest对象,而是基于HttpRequest类扩展后的Request类的对象。...,删除,查看 ViewSet类 GenericAPIView已经完成了许多功能,但会有一个问题,获取所有用户列表和单个用户需要分别定义两个视图和URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射...next=/admin/ 刷新api视图: http://127.0.0.1:8000/myapp/api/ 局部(视图)session认证 注释全局settings.py中关于全局session认证的配置...page_size=2&page_num=2 自动生成接口文档 由于项目开发经验欠缺或着急上线,需求不断改动,项目设计阶段定义的接口已经面目全非,这给前端开发人员参考带来一定困难,如何改善这个问题呢?

    5.4K10

    drf之请求、响应、视图

    APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...在APIView中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法。例如使用APIView简单的实现五个增删查改的API接口。...,那么可以通过条件判断在get_serializer_class方法中通过返回不同的序列化器类名就可以让视图方法执行不同的序列化器对象了。...注意: 该方法在提供序列化器对象的时候,会向序列化器对象的context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的action动作是哪个。除了默认的方法动作外,还可以添加自定义动作。

    2.5K20

    Django内置的通用类视图及实例

    方法: get_queryset():获取此视图的对象列表.必须是可迭代或者可以使查询集.默认返回queryset属性.可以通过重写该方法实现动态过滤.让这种方式能够工作的关键点,在于当类视图被调用时...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....可以直接用Django通用视图里的UpdateView和CreateView。...根据报错的提示,我们可以直接在视图下给success_url参数赋值,或在模型中去定义get_absolute_url()方法,去设置成功后跳转的url。

    3.8K40

    DjangoRESTframework(补充)

    ("图书不是关于Django的") return value 2) validate 在序列化器中需要同时对多个字段进行比较验证时,可以定义 validate 方法进行验证 class...APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...在APIView中仍以常规的类视图定义方法来实现get() 、post() 或者其他请求方式的方法。...,被其他视图或扩展类使用,如果我们在视图中想要获取序列化器对象,可以直接调用此方法。...注意,在提供序列化器对象的时候,REST framework会向对象的context属性补充三个数据:request、format、view,这三个数据对象可以在定义序列化器时使用。

    2.6K30
    领券