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

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

() 方法,可以实现动态过滤查询集,例如只返回当前登录用户的数据:def get_queryset(self): # 只返回当前用户创建的数据 return Student.objects.filter...默认返回 queryset 属性定义的查询集,可重写以实现动态过滤(如返回当前用户的数据)def get_queryset(self): return self.request.user.articles.all...() # 仅返回当前用户发布的文章get_object(self):返回详细视图所需的单个对象实例。...filter_queryset(self, queryset):应用过滤后端对查询集进行过滤,返回处理后的查询集。...get_paginated_response(self, data):返回分页格式的响应对象,配合分页功能使用。您正在阅读的是《Django从入门到实战》专栏!关注不迷路~

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

    Python进阶43-drf框架(五)

    token 手机号登录 邮箱登录 用户密码登录 ---- 路由 from django.conf.urls import url from rest_framework_jwt.views import...return APIResponse(token=user_ser.token)  ---- 返回登录用户信息 serializers.py from rest_framework... 邮箱登录  因为没有手机号,所以无法使用手机登录  群查数据准备 ---- 模型层 from django.db import models ## 用户表:角色groups...重点使用方法 ---- 自定义过滤字段 api目录下的filter.py文件中 ## django-filter插件过滤器类 from django_filters.rest_framework import...过滤插件:filter_class = CarFilterSet 5、自定义过滤器:自定义过滤类实现filter_queryset即可,根据筛选条件筛选后再返回queryset即可 使用: i)视图类添加过滤类

    3.8K20

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

    文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。...GenericAPIView.get_queryset() 重写此方法允许您以多种不同的方式自定义视图返回的查询集。...1.针对当前用户进行筛选 您可能希望筛选查询集,以确保仅返回与发出请求的当前经过身份验证的用户相关的结果。 为此,可以基于用户值进行筛选。...如果使用多个搜索词,则仅当所有提供的词都匹配时,才会在列表中返回对象。 搜索行为可能会因在 前面加上各种字符而受到限制。search_fields “^”以搜索开头。 “=”完全匹配。

    3.2K30

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

    (django_filters.rest_framework.FilterSet): '''商品过滤类''' name = django_filters.CharFilter(field_name...(self, queryset, name, value): '''自定义过滤''' return queryset.filter(Q(category_id=value...可以看到,当已经存在收藏时再重复添加,就会返回non_field_errors错误,是在两个及以上字段联合验证失败时返回错误信息的关键字段,前端在接收后可以进行相应处理。...现在需要进一步实现权限验证,限制用户只能操作自己的收藏等数据,这里选择IsAuthenticated,这是用来判断是否已经登录的,同时需要自定义权限来判断要删除的收藏记录对用的用户是否是当前的用户。...(permissions.BasePermission): '''对象级别的权限,仅允许对象的所有者对其进行编辑''' def has_object_permission(self,

    1.5K20

    37.Django1.11.6文档

    get_group_permissions(obj=None) 返回一个用户当前拥有的权限的set,通过用户组 如果传入obj,则仅返回此特定对象的组权限。...返回已清除的用户名。 RemoteUserBackend.configure_user(user) 配置新创建的用户。 ...例如,如果所有者可以拥有多个汽车,并且汽车可以属于多个所有者 - 多对多关系,则您可以过滤Car外键字段,仅显示由User: class MyModelAdmin(admin.ModelAdmin):...如果子域名不受信任的用户控制且允许来自子域名的Cookie,那么可能发生会话攻击。 例如,一个攻击者可以登录good.example.com并为他的账号获取一个合法的会话。 ...当你访问good.example.com时,你将以攻击者身份登录且不会察觉到并输入你的敏感的个人信息(例如,信用卡信息)到攻击者的账号中。

    26.6K80

    Django模型查询与性能调优:告别N+1问题

    一、查询基础QuerySet 详解Django 中通过模型类的 Manager 构建 QuerySet 来检索数据库对象,其核心特性包括:代表数据库中对象的集合可通过过滤器缩小查询范围具有惰性执行特性(...仅在需要结果时才执行 SQL)常用过滤器all():返回所有对象filter(**kwargs):返回满足条件的对象exclude(** kwargs):返回不满足条件的对象get(**kwargs):...,元组是更轻量的数据结构,无需存储字段名 使用场景 适合需要通过字段名访问字段值的场景,例如需要明确知道每个值对应的字段时适合仅需要获取字段值的场景,例如只需批量获取某个或某几个字段的具体数据时...) # 输出对应的SQL语句四、项目实战场景Django+Vue 后台管理系统中,一般需要支持不同的数据权限仅本人数据权限本部门及以下数据权限本部门数据权限指定部门数据权限全部数据权限数据权限与功能权限...关注不迷路~

    24310

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

    登录:使用项目的超级用户账户登录,初始默认为admin和password。 查看模型列表:登录后,可以看到注册的所有模型的列表。...第2章:深入Django Admin 2.1 Admin界面定制 Django Admin提供了丰富的定制选项,允许开发者根据项目需求调整界面。...3.3 自定义用户模型 Django允许开发者自定义用户模型以满足特定需求。 替换默认用户模型:在settings.py中设置AUTH_USER_MODEL指向自定义用户模型。...3.5 用户界面定制 自定义登录界面:可以创建自定义的登录视图和模板来替换默认的登录界面。 自定义用户注册:可以编写自定义的用户注册视图和表单。...4.2 使用QuerySet进行数据查询 QuerySet API:Django的QuerySet API提供了丰富的查询方法,如过滤、排序、聚合等。

    2.7K10

    Django REST 框架详解 06 | 视图家族 Generics 与 Viewsets

    比如,来自前端用户的数据格式并不是和我们规定的一样,有可能传来空值,错误字符等等。这就需要对 request.data 进行过滤,尤其是在入库的时候。...另外,如果数据有误,DRF 并不知道你的字段是哪出的问题,所以抛异常是只会是数据错误。我们需要对每个字段的每种错误类型给出对应的返回值。...代码实现 这样的好处是,各种需求的接口的请求方式都可以用不同函数定义返回值。比如十大接口对应十个函数,分别码代码。...案例: 用户查询时,发送 GET 请求,返回数据。 2. APIView 视图类 ViewSet 继承 APIView 视图类 实现不需要 Model 类操作,或非标准的 Model 类操作接口。...案例 2: 用户登录时,发送的 POST 请求,并不是完成数据的新增。POST 只是用于提交数据,返回值也不是登录用户信息,而是登录的认证信息。

    1.8K20

    Django实践-03模型-01表生成模型+学科页面与教师页面编写

    投票项目的首页会展示某在线教育平台所有的学科; 点击学科可以查看到该学科的老师及其信息; 用户登录后在查看老师的页面为老师投票,可以投赞成票和反对票; 未登录的用户可以通过登录页进行登录; 尚未注册的用户可以通过注册页输入个人信息进行注册...polls添加已安装的项目(INSTALLED_APPS)中,然后配置MySQL作为持久化方案。...Subject.objects.all() # QuerySet [, ]> 过滤数据...说明2:ORM查询多个对象时会返回QuerySet对象,QuerySet使用了惰性查询,即在创建QuerySet对象的过程中不涉及任何数据库活动,等真正用到对象时(对QuerySet求值)才向数据库发送...,在页面的右上角显示出登录用户的用户名。

    50320

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

    如果报错__str__ returned non-string (type NoneType),可以通过退出登录后台管理或者修改自定义的用户模型的__str__()方法解决,具体可参考https://blog.csdn.net...,前台用户是没有这个权限的。...request.data返回请求正文的解析内容,代替了标准request.POST和request.FILES属性,具体如下: 它包括所有已解析的内容,包括文件和非文件输入; 它支持解析除以外的HTTP...使用Response类只是为返回内容协商的Web API响应提供了一个更好的接口,该响应可以呈现为多种格式。 2.DRF过滤器 DRF提供了过滤功能,来实现简单高效的过滤。...过滤的使用 通过django-filters的DjangoFilterBackend类实现字段过滤。

    6.1K20

    django rest framework通用view

    1. django View   首先,我们使用django自带的view,获取一个课程的列表: # drf是通过json的格式进行数据交互的,所以这里也返回json数据 import json from...APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用的属性...authentication_classes : 用户登录认证方式,session或者token等等 permission_classes : 权限设置,是否需要登录等 throttle_classes...,list方法会返回queryset的json数据。...两者的存在一个即可,通过这个,在返回时,不必去指定某个serilizer 设置过滤器模板:filter_backends 设置分页模板:pagination_class 加入 lookup_field=

    1.3K20

    Django项目知识点(四)

    本来今天不想发文的,昨天没发,怪不好意思的 django view URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应。...json的键值对,而不是列表 request.body就是form表单的数据 Queryset Django ORM用到三个类:Manager、QuerySet、Model。...QuerySet实例 就是从数据库根据自己要求拿数据的 连数据都那不出来,写啥视图 所以在编写queryset必须用django shell 调试 在model中,Django通过给Model增加一个objects...values() 返回包含对象具体值的字典的QuerySet values_list() 与values()类似,只是返回的是元组而不是字典。...tags = Tag.objects.only('name').filter(is_delete=False) values() only() 返回的是queryset字典,不是对象,only才是返回的是对象

    2.2K30

    RESTful源码笔记之RESTful Framework的APIview, Viewset总结分析

    0x01 django View 首先,我们使用django自带的view,获取一个课程的列表: # drf是通过json的格式进行数据交互的,所以这里也返回json数据 import json from...APIView对django本身的View进行封装,从上述的代码,这样分析,两者的差别看起来不是很大,但实际中APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用的属性...authentication_classes : 用户登录认证方式,session或者token等等 permission_classes : 权限设置,是否需要登录等 throttle_classes...list方法会返回queryset的json数据。...两者的存在一个即可,通过这个,在返回时,不必去指定某个serilizer 设置过滤器模板:filter_backends 设置分页模板:pagination_class 加入 lookup_field=

    1.3K10

    Django rest Framework入门 五 :认证、权限、限流、分页和过滤

    API,这样可以在一定程度防止匿名用户恶意获取我们的数据,但是也不是绝对的,比如注册页面、登录页面这些肯定不能要求用户登录后才能访问,不然就陷入死循环了。...ordering=title 就会在返回结果中针对title进行排序 在DRF的排序需要依赖于django-filter实现,所以要先安装: pip install django-filter 安装好之后要修改...ordering=title 过滤器 所谓过滤其实就是在API请求的时候加上一些参数,限制返回的结果,比如只查询id为1的书本信息,或者查询id大于2小于5的书本信息。...title__startswith=天 过滤器的高级使用基本就是这样 分页 分页其实就是把数据库中的数据分批返回给请求者,而不是一次性把所有的数据都返回给请求者,这样容易出问题,比如数据库中商品表有一千万条数据...,总不能一次性把者一千万条数据都返回给请求者,这样服务器要多大的配置才能完成,而且客户端也没办法接收这么多数据。

    78410
    领券