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

如何编写Mixin for queryset,只返回登录用户拥有的数据?

编写Mixin for queryset,只返回登录用户拥有的数据,可以通过以下步骤实现:

  1. 首先,创建一个名为UserOwnedMixin的Mixin类,用于过滤查询集。
代码语言:txt
复制
class UserOwnedMixin:
    def get_queryset(self):
        queryset = super().get_queryset()
        user = self.request.user
        return queryset.filter(owner=user)
  1. 在视图类中使用UserOwnedMixin,并继承需要过滤的视图类。
代码语言:txt
复制
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView
from .models import YourModel

class YourModelListView(LoginRequiredMixin, UserOwnedMixin, ListView):
    model = YourModel
    # 其他视图配置...

在上述代码中,YourModel是你的模型类,YourModelListView是你的视图类。通过继承LoginRequiredMixinUserOwnedMixin,我们确保只有登录用户才能访问该视图,并且只返回该用户拥有的数据。

  1. 最后,将视图配置到URL中。
代码语言:txt
复制
from django.urls import path
from .views import YourModelListView

urlpatterns = [
    path('your-models/', YourModelListView.as_view(), name='your-models'),
    # 其他URL配置...
]

这样,当用户访问/your-models/时,只会返回该用户拥有的数据。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云数据库MySQL版、腾讯云对象存储(COS)等。你可以在腾讯云官网上找到这些产品的详细介绍和文档。

注意:本回答中没有提及其他云计算品牌商,如有需要,请自行搜索相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

drf之请求、响应、视图

-request 当前视图的请求对象 -view 当前请求的类视图对象 -format 当前请求期望返回数据格式 提供的关于数据库查询的属性与方法 属性:queryset  指明使用的数据查询集...方法: get_queryset(self) :返回视图使用的查询集,主要用来提供给Mixin扩展类使用,是列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写 get_object...(self) :返回详情视图所需的模型类数据对象,主要用来提供给Mixin扩展类使用。...要传queryset对象,查询了所有的图书 # serializer_class使用哪个序列化类来序列化这堆数据 queryset = Book.objects # queryset...,所以我们可以通过继承Mixin扩展类来复用这些方法而无需自己编写

2.1K20

Django DRF路由与扩展功能的实现

2.GenericViewSet 使用ViewSet通常并不方便,因为list、retrieve、create、update、destory等方法都需要自己编写,而这些方法与前面讲过的Mixin扩展类提供的方法同名...,所以我们可以通过继承Mixin扩展类来复用这些方法而无需自己编写。...列表数据list,返回2个字段, 详情数据retrieve,返回所有字段, """ def get_serializer_class(self): # 本次客户端请求的视图方法名 self.action...""" class Demo1APIView(APIView): """只允许登录后的用户访问""" permission_classes = [IsAuthenticated] def get(self...仅通过认证的用户 IsAdminUser 仅管理员用户 IsAuthenticatedOrReadOnly 已经登陆认证的用户可以对数据进行增删改操作,没有登陆认证的只能查看数据

3K30

DRF二级视图GenericAPIView

方法 列表视图与详情视图通用 get_queryset(self) 返回视图使用的查询集,是列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写,例如: def get_queryset...详情视图使用 get_object(self) 返回详情视图所需的模型类数据对象,默认使用lookup_field参数来过滤queryset。 在视图中可以调用该方法获取详情信息的模型类对象。...若详情访问的模型类对象不存在,会返回404。 经验:GenericAPIView看起来是非常美好的,可以和各个mixin结合起来使用,但是实际上用处不大。...然后有的接口需要A序列化器进行数据检验,有的需要B序列化器,GenericAPIView这时候改起来就很不方便。...URL中涉及名词,接口被统一,使用HTTP请求方法来区分动作。不同的HTTP方法就代表着对资源的不同操作。

67010

DRF框架(七)——五个视图扩展类 mixins视图工具集-辅助GenericAPIView,一下子继承多个类

作用:提供了几种后端视图(对数据资源的增删改查)处理流程的实现,如果需要编写的视图属于这五种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量。...(见上方GenericAPIView基类知识点) 3)工具类的工具方法返回值都是Response类型对象,如果要格式化数据格式再返回给前台,可以通过 response.data 拿到工具方法返回的Response...除了查询,该list方法会对数据进行过滤和分页 """以下是GenericAPIView和mixin的混合使用视图""" class BookListGenericView(ListModelMixin...方法快速创建资源的视图,成功返回201的状态码 """以下是GenericAPIView和mixin的混合使用视图""" class BookListGenericView(CreateModelMixin...) 单查和修改 3.RetrieveModelMixin(单查) 详情视图扩展类,提供retrieve方法,可以快速实现返回一个存在的数据对象。

55110

django-rest-framewor

中的一致 在GET接口逻辑中,获取QuerySet 开始序列化:将QuerySet作业第一个参数传给序列化类,many默认为False,如果返回数据是一个列表嵌套字典的多个对象集合,需要改为many=...is_valid()方法,对请求数据的合法性进行校验 保存数据:调用save()方法,将数据插入数据库 插入数据到多对多关系表:如果有多对多字段,手动插入数据到多对多关系表 返回:将插入的对象返回   ...中拿到想要的数据 返回结果 5 认证组件   cookie和session两种方式可以保存用户信息,这两种方式不同的是cookie保存在客户端浏览器中,而session保存在服务器中,他们各有优缺点,配合起来使用...token认证步骤:     用户登录,服务器端获取密码,查询用户表,如果存在该用户且第一次登录(或者token过期), 生成token,否则返回错误信息     如果用户不是第一次登录,且token未过期...注意:若需要返回数据,请在最后一个认证类中返回,因为在前面返回,self.authentication()方法中会对返回值进行判断,若不为空,认证的过程就会终止.

1.5K10

重点内容回顾-DRF

on_delete选项指明的是主表删除数据的时候,对于外键引用的表数据如何处理。...上面的命令的意思就是『此文件给所有的用户添加执行权限』 +代表的是增加权限、-代表的是撤销权限、=代表的是设定权限 r代表可读权限,就是可以通过 ls命令查看这个目录的内容。...前后端分离:后端返回前端所需的数据,至于数据怎么显示,由前端自己控制。...数据库查询 属性: queryset(指定视图所使用的查询集) 方法: get_queryset返回视图所使用的查询集 get_object从视图所使用的查询集中查询指定的对象,默认根据pk进行查询。...== 'latest': # 返回latest操作对应的序列化器类 else: # 返回其他操作对应的序列化器类 def get_queryset(self)

2.4K20

Django Rest Framework

* 封装了Response对象,代替了原有的django HttpResponse,视图将管理内容协商并设置正确的渲染器的响应。 * 任何APIException异常将会被捕捉,并做适当的响应。...REST框架提供的通用视图允许快速构建API观点紧密地映射到数据库模型,如果通用视图不适合的需要API, 可以使用常规APIView类,或重用mixin和基类使用的通用视图来组成自己的组可重用通用视图。...1)属性 基本属性: queryset: 用于返回query对象集合,也可以使用get_queryset()方法。...的类列表,和在settings中设置DEFAULT_FILTER_BACKENDS 一样 2)方法 基本方法: get_queryset(): 返回queryset。....GenericViewSet: 继承了GenericAPIView,提供了默认的get_queryset()和get_object()等方法来获取model数据,但不提供任何请求处理方法。

2.3K60

Django REST framwork的权限验证实例

注意:permission_classes设置的是:验证的是用户是否登录用户是否可以操作该数据等的权限; 权限组合方式,目前支持:与&(and) 或|(or) 非~(not) 例如:permission_classes...obj.publisher if obj.publisher else self.fans )== request.user return obj.user== request.user # 判断当前数据是不是登录用户数据...create: 收藏商品 delete: 取消收藏 """ # 权限判断:IsAuthenticated表示是否已经登录,IsOwnerOrReadOnly表示数据是不是属于当前登录用户...所有的对象实例都返回true 表示授权通过 permission_classes = [permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly...请求要进行某个操作的时候 – 2、传递参数将授权类列表中的多个授权类实例化得到实例化对象- 3、调用所有授权实例对象的has_、permission以及has_object_permission方法 – 4、所有的返回结果都为

1.1K10

diango之基于内置视图CBS编程

具有如下几个原则: 代码越少越好 永远不要重复代码 View应当包含呈现逻辑, 不应包括业务逻辑 保持view逻辑清晰简单 不要将CBVs用作403, 404, 500的错误处理程序 保持mixin简单明了...django自带的view如下表所示: 类名 功能 例子 View 基本View, 可以在任何时候使用 见后面详细介绍 RedirectView 重新定向到其他URL 将访问"/log-in/"的用户重新定向到...def get_queryset(self): 第一个方法返回一个字典给前端,包括分页信息,列表信息,已经其他自定义的信息;第二个方法返回数据库中获取到的数据(可能经过条件迭代),具体实现的实例代码如下...: 1 def get_context_data(self, **kwargs): 2 """ 3 用来获取返回给前端页面的dict数据,前端页面可直接通过应用...有时需要前后端异步方式加载数据,就需要使用ajax来完成,这时就可以使用mixin来解决。 使用mixin可以为class提供额外的功能,但它自身却不能单独使用的类.

69330

零基础使用Django2.0.1打造在线教育网站(二十):课程相关页面配置

: # 未登录时页面提示未登录,并跳转到登录页面 return HttpResponse('{"status":"fail", "msg":"用户登录"...,如果有多条则抛出异常而且没有数据也抛异常 # filter方法可以取一个列表出来(可以遍历的queryset),没有数据返回空的queryset,是不会抛异常的...success: function(data) { if(data.status == 'fail'){ if(data.msg == '用户登录...不过还有一个问题,那就是用户如果没有登录,那是不能让他进入课程章节这个页面的,因此需要判断一下。这里因为使用的是方法型编程所以可以使用装饰器loginrequired来进行判断。...大家可以把自己的视频上传到七牛云,然后把生成的外键添加到后台即可,这里不详细介绍,直接开启传送大门:七牛云存储如何上传视频文件 至此,本篇关于课程相关页面的配置介绍就到此结束,感谢你的赏阅。

90810

学生宿舍管理系统(jsp+mysql).rar

源代码和数据库脚本齐全。有运行截图。适合大学生毕业设计参考和Java的初步学习者使用。...else: raise TypeError(‘view must be a callable or a list/tuple in the case of include().’) as_view()方法返回了一个内部定义的可调用函数...什么是mixin?...换句话说,mixin类提供了一些方法,我们不会直接用这些方法,而是把它添加到其他类来使用。 还是有点抽象。 再简单点说,mixin只不过是实现多重继承的一个技巧而已。 这下应该清楚了。...东方说 学到这里,已经开始感受到了Django REST framework的强大之处了,我觉得学一个框架,不仅要看如何使用,还需要了解它的设计思路和底层实现,这样才能更好的总结为自己的编程思想,写出更漂亮的代码

3.7K00
领券