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

在django restframework对象级权限中,模型的所有者必须是“用户”模型,还是可以是任何其他模型?

在Django Rest Framework的对象级权限中,模型的所有者可以是任何其他模型,不一定是"用户"模型。对象级权限是用于限制对特定模型实例的访问和操作权限的机制。它允许我们在请求处理过程中对模型实例进行额外的权限验证。

默认情况下,Django Rest Framework假定模型的所有者是"用户"模型,即模型拥有者必须是认证系统中的用户。这可以通过在权限类中设置owner_field属性来实现自定义的所有者字段。该属性用于指定模型中表示所有者的字段。

以下是一个示例:

代码语言:txt
复制
from rest_framework.permissions import BasePermission

class IsOwnerOrReadOnly(BasePermission):
    message = "You are not the owner of this object."

    def has_object_permission(self, request, view, obj):
        # 仅允许所有者对对象进行编辑
        return obj.owner == request.user

在上述示例中,obj.owner表示模型实例中表示所有者的字段。根据具体需求,我们可以将其设置为任何其他模型中表示所有者的字段。

总结:

  • 在Django Rest Framework的对象级权限中,模型的所有者可以是任何其他模型,不一定是"用户"模型。
  • 我们可以通过自定义权限类并设置owner_field属性来指定模型中表示所有者的字段。
  • 通过自定义权限类,我们可以根据具体需求限制对模型实例的访问和操作权限。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django REST Framework-常用权限类型

Django REST Framework一个用于构建Web API强大框架。其中一个重要特性提供了多种权限类型来控制用户对API端点访问。...DjangoModelPermissions:基于Django模型权限控制。允许用户执行特定操作之前检查模型权限。...DjangoObjectPermissions:允许用户执行特定操作之前检查模型实例权限。例如,如果一个用户只有对一个特定模型实例“更改”权限,那么该用户只能够修改该实例。...这个权限类检查当前请求用户是否代码片段所有者,如果则允许修改或删除。否则,只允许读取操作。...put()方法,我们使用self.request.user将当前请求用户设置为代码片段所有者。这样,如果用户成功更新代码片段,他们就会成为该代码片段所有者

1.5K20

浅谈django不使用restframework自定义接口与使用区别

django可以使用restframework快速开发接口,返回前端所需要json数据,但是有时候利用restframework开发接口并不能满足所有的需求,这时候就需要自己手动开发接口,也就是将需要用到某些对象转化为需要使用...1.定义我们需要模型类,并且在对应模型定义对应对象转化为字典函数 from django.db import models class Questionnaire(models.Model...,将每一个问卷对象通过自定义函数转化为字典,最后返回json数据,同样处理post请求添加问卷时,首先获取到问卷标题,然后实例化一个问卷对象,再将问卷对象保存。...,使用restframework开发接口虽然快速,代码易懂,但是它缺点在于通过序列化类只能返回这个模型类本身字段,并不能返回它所关联外键属性字段,要想获取其他关联模型数据就得定义另外类视图...但是同样它好处在于快速,代码简洁易懂,只不过获取不同模型数据需要定义不同接口,不能像自定义接口那样定义一个接口可以获得其他模型数据。

78230
  • django 1.8 官方文档翻译: 2-1-3 元选项 (初稿)

    如果你模型定义默认 models.py 之外(比如,你现在用模型 myapp.models 子模块当中),你必须告诉 Django模型属于哪个应用: app_label = 'myapp...managed Options.managed 默认为True,意思Djangomigrate命令创建合适数据表,并且会在 flush 管理命令移除它们。...permissions Options.permissions 设置创建对象权限额外权限。增加、删除和修改权限会自动为每个模型创建。...你可以自定义这个列表,比如,如果你应用不需要默认权限任何一项,可以把它设置成空列表。模型被migrate命令创建之前,这个属性必须被指定,以防一些遗漏属性被创建。...它是一个元组元组,组合起来时候必须唯一

    82130

    django restframework serializer 增加自定义字段操作

    使用django restframework serializer 序列化django定义model时,有时候我们需要额外在serializer增加一些model没有的字段。...假设现在有一个Animal模型,其中有name, type, country字段,country为外键。我们序列化Animal时,需要额外增加外键countryarea信息。...它通过调用它所连接序列化类方法来获得它值。它可用于将任何类型数据添加到对象序列化表示。...由 method_name 参数引用序列化方法应该接受一个参数(除了 self),这是要序列化对象。它应该返回你想要包含在对象序列化表示任何内容。...return instance 以上这篇django restframework serializer 增加自定义字段操作就是小编分享给大家全部内容了,希望能给大家一个参考。

    3.6K40

    37.Django1.11.6文档

    这里使用继承一些提示: 如果你模版中使用 {% extends %} 标签,它必须模版第一个标签。 其他任何情况下,模版继承都将无法工作。...装饰器也可以采取迭代权限,在这种情况下,用户必须具有所有权限才能访问视图。...这个文档提供了如何定制权限系统细节。 认证后端系统扩展,可用于User模型存储用户名和密码与Django默认不同服务进行认证。...get_user方法使用一个user_id,可以是用户名,数据库ID等等,但必须用户对象主键,并返回一个用户对象。...Django更改1.10: 旧版本,ModelBackend允许非活动用户进行身份验证。 处理对象权限 django权限框架对对象权限有基础支持, 尽管核心没有实现它.

    24.3K80

    Django+RestFramework API接口及接口文档并返回json数据操作

    修改settings.py,添加应用到配置 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes...浏览器输入: http://127.0.0.1:8000/ # 出现django成功界面 http://127.0.0.1:8000/admin # 进入管理后台 序列化模型类,/api/下创建...route.register(r'test', views.TestViewSet) # 注册上一路由地址并添加 urlpatterns = [ path('', include(route.urls...应用商店,搜索postman进行安装 postman输入http://127.0.0.1:8000/api/student点击send,并返回json数据。...以上这篇Django+RestFramework API接口及接口文档并返回json数据操作就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.5K20

    Django实战-信息资讯-重构 USER 模型

    与之前生鲜电商项目相比较,本次用户应用模型层会更深入复杂,涉及到创建超级用户、创建普通用户用户权限。...一、指定自定义用户模型Django 自定义 User model 满足一些最低要求: 模型必须有一个唯一字段可被用于识别目的。可以是一个用户名、电子邮件或任何其它独特属性。...这是一个抽象类,可以为自定义用户模型层次结构包含它。它提供所有 Django 权限必须方法和字段。...Django 允许通过修改 settings.py 文件 AUTH_USER_MODEL 设置覆盖默认 User 模型,其值引用一个自定义模型。...# AUTH_USER_MODEL 这个属性 django 内置,会主动到这个文件查找这个属性, # 如果找到了,那么就会使用这个属性指定模型来作为 User 对象 # AUTH_USER_MODEL

    93220

    关于“Python”核心知识点整理大全59

    例如,项目“学习笔记”,应用程序最高层数据主题,而 所有条目都与特定主题相关联。只要每个主题都归属于特定用户,我们就能确定数据库每个条 目的所有者。...2处输出Django指出我们试图给既有 模型Topic添加一个必不可少(不可为空)字段,而该字段没有默认值。...为将所有既有主题都关联到管理用户ll_admin,我输入了用户ID值1(见6)。并非必须使用 超级用户,而可使用已创建任何用户ID。...现在,如果你试图查看其他用户主题条目,将看到Django发送消息Page Not Found。 第20章,我们将对这个项目进行配置,让用户看到更合适错误页面。...Django意思说,创建新主题时,你必须指定其owner字段值。 由于我们可以通过request对象获悉当前用户,因此存在一个修复这种问题简单方案。

    13710

    django使用ckeditor上传图片

    1、模型设置字段为富文本类型,这里需要注意引入RichTextUploadingField,以允许上传图片,需要和RichTextField区分开 from ckeditor_uploader.fields...html页面的JS和ckeditorJS文件, djangoinstalled_app中注册应用时,会自动虚拟环境中生成应用信息/home/python/.virtualenvs/django_...,并手动设置文件上传请求路径,默认请求路径为live-server路径,必须设置为服务器域名和端口 }, }); 5、后端设置总路由,'ckeditor_uploader.urls'中会将接收到请求进行...csrf校验免除,并限制了只有登录用户才可以上传图片,ckeditor默认应用django-admin用户校验方法,django-admin校验方法不允许跨域请求,我们需要使上传图片类试图函数继承自...django-restframeworkAPIVIew,    # url(r'^ckeditor/', include('ckeditor_uploader.urls')), # 为富文本编辑器添加总路由

    2.5K10

    重点内容回顾-DRF

    ,a代表all(即全部三者:u(user该文件所有者)、g(group该文件所有者所在用户组)、o(other表示其他用户)),x代表执行权限。...上面的命令意思就是『此文件给所有的用户添加执行权限』 +代表增加权限、-代表撤销权限、=代表设定权限 r代表可读权限,就是可以通过 ls命令查看这个目录内容。...w代表写入权限,就是可以通过 touch等命令该目录下创建新文件。 x代表执行权限,就是可以通过 cd命令进入这个目录等。...5.3序列化&反序列化 下面从我们最近推文项目来简单理解两个概念。 序列化:将模型对象转换为字典或者json数据过程。 反序列化:将前端传递数据保存到模型对象过程。...权限:区分认证与未认证用户。可以进行DRF框架默认全局权限设置,也可对其进行修改,还可以指定某个视图权限控制设置,甚至可以自定义权限控制类。权限和认证通常是一起使用

    2.4K20

    Django项目知识点(三)

    指定这个属性后你会得到一个get_xxx_order()和set_xxx_order()方法,通过它们你可以设置或者回去排序对象 ordering 这个字段告诉Django模型对象返回记录结果集按照哪个字段排序...Django自动为每个设置了admin对象创建添加,删除和修改权限。...注意:Django一个模型只允许有一个自增字段,并且该字段必须为主键!...一对一:某表创建一行数据时,有一个单选下拉框(下拉框内容被用过一次就消失了) 一个学生信息表就只用一个对应详细信息表 再比如一个用户表和一个用户信息表。...实际网站,可能需要保存用户许多信息,但是有些信息不经常用

    1.9K30

    Django-REST:001-快速入门Django Restful Framework

    项目支持 打开自己Django项目,项目配置文件settings.py,添加应用配置 INSTALLED_APPS =( … ‘rest_framework’ ) 项目根路由中...,添加restframework认证路由 INSTALLED_APPS = [ .........操作案例 第一个案例,创建一个基于数据模型操作api接口 完成对用户数据读写操作 rest framework任何配置都是基于全局REST_FRAMEWORK配置选项,打开你Django项目配置文件...接下来,我们主路由urls.py,添加数据模型处理方式,如下: """myrest_ex01 URL Configuration The `urlpatterns` list routes URLs...PS:由于手工编写之后编辑器渲染时可能会出现代码渲染缩进出错,所以大家在看代码过程尽量注意!

    36920

    保护微服务(第一部分)

    TLS相互认证 无论TLS相互认证还是基于JWT方法,每个微服务都需要拥有自己证书。...OAuth 2.0授权类型解释协议,对象(客户端)应该只能访问资源所有者同意代表他/她访问资源。...此外,从给定微服务角度来看,无论您是从外部客户端还是其他微服务获取请求,您获得都是JWT - 因此这是一个对称安全模型。...XACML(扩展访问控制标记语言) XACML细粒度访问控制事实标准。它引入了一种方法来以基于XML领域特定语言(DSL)细粒度方式来表示访问资源所需一组权限。...本文结束之前,还有一个重要问题需要回答,API网关在授权环境下作用是什么,我们可以拥有全球访问访问控制策略 - 适用于最终用户,在网关上实施 - 而不是服务策略,服务策略必须在服务级别执行

    2.5K50

    Django之ModelMeta选项详解

    文件,这时候需要指定你这个模型哪个应用程序。...Options.app_label 如果一个model定义默认models.py,例如如果你appmodelsmyapp.models子模块下,你必须定义app_label让Django知道它属于哪一个...数据表名称可以是 SQL 保留字,也可以包含不允许出现在 Python 变量特殊字符,这是因为 Django 会自动给列名和表名添加引号。...指定这个属性后你会得到一个get_xxx_order()和set_xxx_order()方法,通过它们你可以设置或者回去排序对象 ordering 这个字段告诉Django模型对象返回记录结果集按照哪个字段排序...Django自动为每个设置了admin对象创建添加,删除和修改权限

    95630

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

    权限检查始终视图开始处运行,然后再允许执行其他任何代码,通常会使用request.user和request.auth属性身份验证信息来确定是否应允许传入请求。...权限用于授予或拒绝不同类别的用户对API不同部分访问,最简单许可方式允许访问任何经过身份验证用户,并拒绝访问任何未经身份验证用户。...现在需要进一步实现权限验证,限制用户只能操作自己收藏等数据,这里选择IsAuthenticated,这是用来判断是否已经登录,同时需要自定义权限来判断要删除收藏记录对用用户是否当前用户。...(permissions.BasePermission): '''对象级别的权限,仅允许对象所有者对其进行编辑''' def has_object_permission(self,...可以看到,先在DRF后台增加收藏,然后Postman模拟访问获取到JWT后再删除,显然,只能删除用户自己收藏,而不能删除其他用户收藏。

    1.1K20

    关于“Python”Django 管理网站核心知识点整理大全52

    18.2.2 激活模型 要使用模型必须Django将应用程序包含到项目中。...本节,我们将建立管理网站,并通过它 使用模型Topic来添加一些主题。 1. 创建超级用户 Django允许你创建具备所有权限用户——超级用户权限决定了用户可执行操作。...最严 格权限设置只允许用户阅读网站公开信息;注册了用户通常可阅读自己私有数据,还可 查看一些只有会员才能查看信息。为有效地管理Web应用程序,网站所有者通常需要访问网站 存储所有信息。...向管理网站注册模型 Django自动管理网站添加了一些模型,如User和Group,但对于我们创建模型必须 手工进行注册。...4处,我们Entry类嵌套了Meta类。Meta存储用于管理模型额外信息,在这里,它让 我们能够设置一个特殊属性,让Django需要时使用Entries来表示多个条目。

    16410

    前后端分离架构设计(权限模型

    列表里维护可能用户权限关系,也可以是用户组与权限关系,也可以是角色与权限关系,甚至部门,职位等等于权限关系。 ACL权限体系业务规则。...而拥有对象权限用户,又可以将该对象权限分配给其他用户,所以称之为“自主(Discretionary)”控制。...MAC设计,每一个对象都有一些权限标识,每个用户同样也会有一些权限标识,而用户能否对该对象进行操作取决于双方权限标识关系,这个限制判断通常是由系统硬性限制。...比如在影视作品我们经常能看到特工查询机密文件时,屏幕提示需要“无法访问,需要一安全许可”,这个例子,文件上就有“一安全许可”权限标识,而用户并不具有。...MAC非常适合机密机构或者其他等级观念强烈行业,但对于类似商业服务系统,则因为不够灵活而不能适用。 MAC可以继续使用DAC模型,但是要对用户进行等级划分,比如一,二,三......

    1.9K10
    领券