() 方法,可以实现动态过滤查询集,例如只返回当前登录用户的数据: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从入门到实战》专栏!关注不迷路~
这节我们使用Django的model创建数据库表,以及如何使用Django ORM查询数据库并过滤结果。接下来开始: ?...User #查询所有用户信息 >>> User.objects.all() QuerySet []> #获取第一条用户信息 >>> User.objects.first()... #按照用户名查询返回集合 >>> User.objects.filter(username='yale') QuerySet []> #返回一条信息...我们访问http://127.0.0.1:8000/admin,输入帐号密码登录后,会发现Post实体注册成功: ? 点击Posts可以查看帖子的列表 添加数据、删除、修改数据等: ? ?...今天的数据库操作学习就到这里,下节见! 关注公号 下面的是我的公众号二维码图片,欢迎关注。 yale记公众号
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)视图类添加过滤类
'django_filters', ] Django-filter 已针对所有支持的 Python 和Django版本以及最新版本的 Django REST Framework ( DRF ) 进行了测试...python:3.5、3.6、3.7、3.8 django:2.2、3.0、3.1 DRF : 3.10+ 简单入门 Django-filter 提供了一种基于用户提供的参数过滤查询集的简单方法。...假设我们有一个Product模型,我们想让我们的用户过滤他们在列表页面上看到的产品。...,希望让我们的用户根据名称、价格或发布日期进行过滤 exact 精准查找,等价于filter(name=xx),对应sql语句 where name='xx'; iexact 使用 like 进行查找,...例如,您可以将博客文章过滤为仅发布的文章和登录用户拥有的文章)。
文章目录 一、普通过滤 1.针对当前用户进行筛选 2.针对网址进行筛选 3.针对查询参数进行筛选 二、通用过滤 1.全局设置 2.视图设置 3.简单过滤 4.搜索器过滤 4.1 多字段查找 4.2 多字段查找...4.3 嵌套查找 4.4 参数说明 4.5 自定义过滤器 一、普通过滤 REST 框架的通用列表视图的默认行为是返回模型管理器的整个查询集。...GenericAPIView.get_queryset() 重写此方法允许您以多种不同的方式自定义视图返回的查询集。...1.针对当前用户进行筛选 您可能希望筛选查询集,以确保仅返回与发出请求的当前经过身份验证的用户相关的结果。 为此,可以基于用户值进行筛选。...如果使用多个搜索词,则仅当所有提供的词都匹配时,才会在列表中返回对象。 搜索行为可能会因在 前面加上各种字符而受到限制。search_fields “^”以搜索开头。 “=”完全匹配。
(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,
() # 所有图书get_queryset() 方法:允许动态定义查询集,比如基于当前用户过滤数据。...def get_queryset(self): """只返回当前用户的图书或公开图书""" base_queryset = Book.objects.all() # 未登录用户只能看到公开图书...# 登录用户可以看到自己的图书和公开图书 return base_queryset.filter( Q(owner=self.request.user) | Q(is_public=...中,首先调用父类方法应用配置的过滤器然后遍历所有查询参数,检查是否与模型字段匹配对于匹配的参数,构建过滤条件并应用到查询集最后序列化过滤后的查询集并返回响应使用示例假设 Book 模型有 title、...title=Django - 过滤标题包含 "Django" 的图书/api/books/?
get_group_permissions(obj=None) 返回一个用户当前拥有的权限的set,通过用户组 如果传入obj,则仅返回此特定对象的组权限。...返回已清除的用户名。 RemoteUserBackend.configure_user(user) 配置新创建的用户。 ...例如,如果所有者可以拥有多个汽车,并且汽车可以属于多个所有者 - 多对多关系,则您可以过滤Car外键字段,仅显示由User: class MyModelAdmin(admin.ModelAdmin):...如果子域名不受信任的用户控制且允许来自子域名的Cookie,那么可能发生会话攻击。 例如,一个攻击者可以登录good.example.com并为他的账号获取一个合法的会话。 ...当你访问good.example.com时,你将以攻击者身份登录且不会察觉到并输入你的敏感的个人信息(例如,信用卡信息)到攻击者的账号中。
一、查询基础QuerySet 详解Django 中通过模型类的 Manager 构建 QuerySet 来检索数据库对象,其核心特性包括:代表数据库中对象的集合可通过过滤器缩小查询范围具有惰性执行特性(...仅在需要结果时才执行 SQL)常用过滤器all():返回所有对象filter(**kwargs):返回满足条件的对象exclude(** kwargs):返回不满足条件的对象get(**kwargs):...,元组是更轻量的数据结构,无需存储字段名 使用场景 适合需要通过字段名访问字段值的场景,例如需要明确知道每个值对应的字段时适合仅需要获取字段值的场景,例如只需批量获取某个或某几个字段的具体数据时...) # 输出对应的SQL语句四、项目实战场景Django+Vue 后台管理系统中,一般需要支持不同的数据权限仅本人数据权限本部门及以下数据权限本部门数据权限指定部门数据权限全部数据权限数据权限与功能权限...关注不迷路~
登录:使用项目的超级用户账户登录,初始默认为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提供了丰富的查询方法,如过滤、排序、聚合等。
比如,来自前端用户的数据格式并不是和我们规定的一样,有可能传来空值,错误字符等等。这就需要对 request.data 进行过滤,尤其是在入库的时候。...另外,如果数据有误,DRF 并不知道你的字段是哪出的问题,所以抛异常是只会是数据错误。我们需要对每个字段的每种错误类型给出对应的返回值。...代码实现 这样的好处是,各种需求的接口的请求方式都可以用不同函数定义返回值。比如十大接口对应十个函数,分别码代码。...案例: 用户查询时,发送 GET 请求,返回数据。 2. APIView 视图类 ViewSet 继承 APIView 视图类 实现不需要 Model 类操作,或非标准的 Model 类操作接口。...案例 2: 用户登录时,发送的 POST 请求,并不是完成数据的新增。POST 只是用于提交数据,返回值也不是登录用户信息,而是登录的认证信息。
投票项目的首页会展示某在线教育平台所有的学科; 点击学科可以查看到该学科的老师及其信息; 用户登录后在查看老师的页面为老师投票,可以投赞成票和反对票; 未登录的用户可以通过登录页进行登录; 尚未注册的用户可以通过注册页输入个人信息进行注册...polls添加已安装的项目(INSTALLED_APPS)中,然后配置MySQL作为持久化方案。...Subject.objects.all() # QuerySet [, ]> 过滤数据...说明2:ORM查询多个对象时会返回QuerySet对象,QuerySet使用了惰性查询,即在创建QuerySet对象的过程中不涉及任何数据库活动,等真正用到对象时(对QuerySet求值)才向数据库发送...,在页面的右上角显示出登录用户的用户名。
2、热卖商品接口实现 只需要在goods/filter.py中加上is_hot的过滤条件即可: 1 class GoodsFilter(django_filters.rest_framework.FilterSet...): 2 """商品过滤""" 3 4 # name是要过滤的字段,lookup是执行的行为 5 pricemin = django_filters.NumberFilter...message="已收藏" 19 ) 20 ] 21 model = UserFav 22 # 收藏的时候需要返回商品的...,这里要把owner改为我们数据库中的user 18 return obj.user == request.user 在用户收藏接口中完善权限,收藏只有登录用户才能收藏且必须是当前登录用户...# 搜索的字段 14 lookup_field = 'goods_id' 15 16 # 只能查看当前登录用户的收藏,不会获取所有用户的收藏 17 def get_queryset
如果报错__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类实现字段过滤。
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=
使用场景: 重写 get_serializer_class和get_queryset,根据不同的操作返回不同的序列化器类和不同的查询集。...== 'latest': # 返回latest操作对应的序列化器类 else: # 返回其他操作对应的序列化器类 def get_queryset(self)...(默认的) IsAuthenticated仅通过认证的用户 IsAdminUser仅管理员用户 IsAuthenticatedOrReadOnly认证的用户可以完全操作,否则只能get读取 5.1使用...针对未登录(匿名)用户的限流控制类 'rest_framework.throttling.AnonRateThrottle', # 针对登录(认证)用户的限流控制类...pass 7.过滤 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。
本来今天不想发文的,昨天没发,怪不好意思的 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才是返回的是对象
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=
API,这样可以在一定程度防止匿名用户恶意获取我们的数据,但是也不是绝对的,比如注册页面、登录页面这些肯定不能要求用户登录后才能访问,不然就陷入死循环了。...ordering=title 就会在返回结果中针对title进行排序 在DRF的排序需要依赖于django-filter实现,所以要先安装: pip install django-filter 安装好之后要修改...ordering=title 过滤器 所谓过滤其实就是在API请求的时候加上一些参数,限制返回的结果,比如只查询id为1的书本信息,或者查询id大于2小于5的书本信息。...title__startswith=天 过滤器的高级使用基本就是这样 分页 分页其实就是把数据库中的数据分批返回给请求者,而不是一次性把所有的数据都返回给请求者,这样容易出问题,比如数据库中商品表有一千万条数据...,总不能一次性把者一千万条数据都返回给请求者,这样服务器要多大的配置才能完成,而且客户端也没办法接收这么多数据。
,版本信息也可以放在HTTP协议中 过滤信息,使用URL的参数代表过滤 返回值: 每一个返回代码都有具体特定含义 返回格式:推荐固定具体格式 DjangoRestFramework(DRF) https...# 使用案例 name = self.request.query_params.get('name', None) - user - 登录后的用户信息都在...user中 - 如果没有登录,则是anoymous - 可以用来判断用户是否登录成功Responserest_framework.response.Response用Renderer...- 支持的属性 - queryset:查询结果集 - serializer_class: 视图使用的序列化器 - panination_class...: 分页控制器 - filter_backends: 过滤器后端 - lookup_field:查询条件字段,默认为pk - get_queryset: 返回查询结果集集合