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

在ViewSet中读取经过身份验证的用户对象(Django Rest-框架)

在Django Rest框架中,ViewSet是一种用于处理API请求的视图类。它提供了常见的CRUD操作(创建、读取、更新、删除)以及其他自定义操作。

要在ViewSet中读取经过身份验证的用户对象,可以通过以下步骤实现:

  1. 导入必要的模块和类:from rest_framework import viewsets from rest_framework.permissions import IsAuthenticated from .serializers import UserSerializer from django.contrib.auth.models import User
  2. 创建一个继承自ViewSet的自定义视图类,并设置权限为IsAuthenticated,以确保只有经过身份验证的用户可以访问:class UserViewSet(viewsets.ViewSet): permission_classes = [IsAuthenticated]
  3. 在自定义视图类中定义一个方法,用于读取经过身份验证的用户对象: def retrieve(self, request, pk=None): user = request.user serializer = UserSerializer(user) return Response(serializer.data)
  4. 在urls.py文件中配置路由,将自定义视图类与URL路径关联起来:from django.urls import path from .views import UserViewSet urlpatterns = [ path('users/<int:pk>/', UserViewSet.as_view({'get': 'retrieve'}), name='user-detail'), ]

现在,当经过身份验证的用户访问/users/<user_id>/路径时,将调用UserViewSet的retrieve方法,并返回经过序列化的用户对象。

关于以上代码中的一些名词的解释如下:

  • ViewSet:在Django Rest框架中,ViewSet是一种用于处理API请求的视图类,它提供了常见的CRUD操作和其他自定义操作。
  • 身份验证(Authentication):身份验证是一种确认用户身份的过程,以确保只有授权的用户可以访问受保护的资源。
  • 用户对象(User Object):用户对象是指在应用程序中表示用户的数据结构,通常包含用户的用户名、密码、电子邮件等信息。
  • 序列化(Serialization):序列化是将复杂的数据结构(如对象、列表)转换为可存储或传输的格式(如JSON、XML)的过程。
  • URL路径(URL Path):URL路径是指用于标识资源位置的字符串,通常由域名、路径和查询参数组成。

推荐的腾讯云相关产品和产品介绍链接地址:

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

相关·内容

Django rest Framework入门 四 :视图

Django rest Framework入门 二 :DRF框架初体验其实已经使用了视图了(book.views里面的代码),而且就是实际开发中最常用模式,但是那是经过DRF框架高度封装,代码可读性不好...* **视图类代码** 这里有一个特别的处理,就是视图类函数名是list, create这样具体动作,而不是djangoput,post这样请求方法,这和后面的url配置有关。...Django不同是,视图类as_view方法添加了一个字典参数,字典内容是HTTP请求方法和对应函数名键值对。...这里事实上是DRF框架对路由分发机制Django基础上做了优化,让我们可以将所有的请求方法都写在一个视图类,而不用像在Django那样必须区分列表类视图还是详情类视图。...Django,由于查单一和查多个都是由GET请求方法触发,所以不能写在同一个类,必须拆分到详情类和视图类

9810
  • 让 DRF Views 支持依赖注入

    起因 DjangoDjango REST framework 是 Python 开发者常用框架组合,通常来说,一个典型 DRF 式 API 可能长这个样子: from rest_framework.generics...同时,输入输出代码多个 API 是有一定程度重复, D.R.Y 重度患者无法接受。.../items/") async def read_items(commons: dict = Depends(common_parameters)): return commons 然而,现实工程中切换框架往往是成本高昂...所以,如果能在 Django & DRF 实现类似依赖注入功能,会较大程度提高 views 可读性并降低 TDD 门槛,间接提高代码质量。...原来主干逻辑没有依赖 request 对象情况下,单元测试用例构造被简化成了 dict 当然仍旧还有不完美的地方: 没有使用 Type Annotation ,声明上较 FastAPI 更为冗余

    40750

    Django REST Framework

    ,必须使用此函数进行验证 如果验证失败,返回数据错误异常 validated_data: 经过验证后数据,存入此结构 视图 DRF视图从处理任务,处理流程等跟Django基本一致 此视图基本是django...视图扩展 Request 把请求解析成一个request实例 属于DRF,跟djangoHttpRequest不太一样 得到Request之前有一个Parse对传入数据请求进行解析 data...属性 请求数据体,类似于Djangorequest.POST, request.FILES DRF主要指的是Json query_params 所有传入关键字 api.tulingxueyuan.com...drf请求和反馈类会引发并处理APIExceptiondispatch之前,会进行身份验证,权限检查,流量控制支持属性有authentication_classes: 列表或者元祖,身份验证类...ViewSet 把一系列操作打包放入一个类 list:GET retrieve:GET + id destroy:DELETE update:UPDATE create:POST

    2.2K63

    Python进阶42-drf框架(四)

    ,将用户存储request.user,再进入下一步校验(权限校验) # 非法用户:代表校验失败,抛出异常,返回403权限异常结果 self.perform_authentication...) """ 权限六表分析 基于用户权限访问认证: RBAC (Role Based Acess Control) 自己简单了解:基于auth认证规则 Django框架采用是RBAC认证规则...') ## 合法用户还需要从auth_list[1]解析出来 ## 假设一种情况:信息为abc.123.xyz,就可以解析出admin用户;实际开发,该逻辑一定是校验用户正常逻辑...# 2) 设置一个 scope 类属性,属性值为任意见名知意字符串 # 3) settings配置文件,配置drfDEFAULT_THROTTLE_RATES,格式为 {scope字符串: '...次数/时间'} # 4) 自定义频率类重写 get_cache_key 方法 # 限制对象返回 与限制信息有关字符串 # 不限制对象返回 None (只能放回None,不能是False

    1.7K20

    DRF系列总结二:脚手架搭建

    Django基础工程基础上,安装DRF并进行配置:比如统一接口返回格式、统一异常处理等,并在后面的文章,不断完善出一套DRF脚手架,以降低后面的开发同学趟坑成本。...一、安装DRF   首先,我们创建一个Django基础工程demo,并创建一个测试app,得到了Django框架初始化代码,代码目录结构如下: # django-admin startproject...配置文件REST_FRAMEWORK字典获取配置信息,获取不到则使用DRF默认配置: ......,去掉了匿名用户读取权限,仅允许经过身份验证注册用户访问接口; 这里接口认证策略,去掉了HTTP基本认证方式(接口提供账号密码),仅保留了使用Django默认session后端进行身份验证机制...,适用于与网站在相同Session环境运行AJAX客户端;身份验证成功后,会得到以下凭据: - `request.user` 是一个 Django User 实例 - `request.auth`

    3.7K60

    Rest_framework Route

    SimpleRouter类源码 总结 Rest_framework Router 路由器 虽说django rest_framework是基于django,url路由到视图主要还是利用django...dispatcher路由系统(可以参考我另一篇关于django url dispatcher详解),但是rest_framework还在django路由基础上,提供了基于restful风格更高等级路由方式...exist on the viewset will be bound # 关键:遍历路由,处理每条路由中方法,是否viewset定义,只有viewset定义了才会放入新...,但是有时候我们viewset虽然定义了action,但是再路由生成不想使用,那么就要可以继承SimpleRouter,修改他Route对象mapping,将不想使用action映射去掉即可...将每条url抽象为一个Route对象,将自定义抽象为动态Route对象(最终还是会根据@action定义内容,将动态Route转换为Route对象),最后根据注册到路由器路由规则,生成url。

    1.1K10

    django写接口(实战篇)

    首先我们需要安装过滤器模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py INSTALLED_APPS 进行注册才可以使用。...model = Post fields = ['title', 'create_time', 'author'] 然后我们 viewSet 指定 FilterClass class PostViewSet...字段,author 我们使用 django 自带 User 类, # 我们通过 ForeignKey 进行关联两个 Model,related_name 为反向引用, # 即我们...rest_framework 身份认证 当我们设置权限时候,我们不可能每个接口都去设置用户登录,所以就涉及用户身份验证,Android App 常用身份验证是 Token 验证,所以这部分主要讲 TokenAuthentication...,生成 token 数据库 python manage.py migrate生成数据库后,我们需要对已经存在用户生成 token from django.contrib.auth.models import

    2.1K20

    Django_rest框架实践项目(一)入门helloWord项目的创建和代码解释

    1 应该映射用户model,但是django已经将自带映射好了。所以,用户model就不需要自己建设这个模型了。...里面的内容为 from django.contrib.auth.models import User, Group # 虚拟环境下要安装rest_framework这个框架 from rest_framework...导入框架路由模块 from quickstartapp import views router = routers.DefaultRouter() 初始化一个路由对象...,才会出现rest框架页面,因为这个对象是rest框架里面的类创建对象 from rest_framework import routers 导入框架路由模块 不然页面还是django页面。...所以路由里面一定到创建rest对象并且进行引用。 以上操作之后,浏览器输入之后,我们就会看见这样页面 ?

    1.2K20

    drf之请求、响应、视图

    Request对象数据是根据前端发送数据格式进行解析之后结果。不论前端发送是那种格式数据,我们都可以使用统一方式读取数据。...1.2.2 常用属性 .data 传给Response对象,序列化后但尚未render处理数据 .status_code 状态码数字 .content 经过render处理后响应数据...APIView与View不同之处在于: 传入到视图方法是REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...,那么可以通过条件判断get_serializer_class方法通过返回不同序列化器类名就可以让视图方法执行不同序列化器对象了。...**ViewSet,没有提供任何动作action方法,需要我们自己实现action方法。

    2.1K20

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

    DRF视图和常用功能 DRF视图 DRF视图类介绍 DRF框架中提供了众多通用视图基类与扩展类,以简化视图编写。...对象不再是Django默认HttpRequest对象,而是基于HttpRequest类扩展后Request类对象。...Request对象数据是自动根据前端发送数据统一解析数据格式。...,删除,查看 ViewSet类 GenericAPIView已经完成了许多功能,但会有一个问题,获取所有用户列表和单个用户需要分别定义两个视图和URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射...IsAdminUser:仅管理员用户 IsAuthenticatedOrReadOnly:登录用户可以读写API,未登录用户只读 DRF Session 认证 参考文档: https://www.django-rest-framework.org

    4.6K10

    Django Rest Framework

    常规view类,优点: * 提供了更好用request对象,不同于普通django HttpRequest更好用。...* 封装了Response对象,代替了原有的django HttpResponse,视图将管理内容协商并设置正确渲染器响应。 * 任何APIException异常将会被捕捉,并做适当响应。...* 传入请求将身份验证和适当权限和节流检查将之前运行调度请求处理程序方法。...1)api_view()使用方法 这个视图将使用默认渲染器、解析器、身份验证设置中指定类等。...REST框架提供通用视图允许快速构建API观点紧密地映射到数据库模型,如果通用视图不适合需要API, 可以使用常规APIView类,或重用mixin和基类使用通用视图来组成自己组可重用通用视图。

    2.3K60

    测试开发进阶(二十九)

    /put/delete等请求方法,而只支持action动作 但是 ViewSet没有提供 get_object(), get_serializer等方法 继承 viewsets.GenericViewSet... View DRF APIView GenericAPIView mixins扩展类 CreateAPIView(合并拓展类) 视图集 action和请求方法映射 ViewSet GenericViewSet...第二个参数viewset为视图集「不要加as_view」 将自动生成路由添加到列表 from django.urls import path, includefrom projects import...)urlpatterns = [ # 将自动生成路由添加到列表 path('',include(router.urls))] action 自定义action from rest_framework.decorators...参数用于指定该动作支持请求方法,默认为get detail用于指定该动作要处理是否为详情资源对象「url是否需要传递pk值」 url.py添加 path('project/names/', views.ProjectsViewSet.as_view

    66810

    RESTful源码笔记之RESTful FrameworkAPIview, Viewset总结分析

    0x01 django View 首先,我们使用django自带view,获取一个课程列表: # drf是通过json格式进行数据交互,所以这里也返回json数据 import json from...APIView对django本身View进行封装,从上述代码,这样分析,两者差别看起来不是很大,但实际APIView做了很多东西,它定义了很多属性与方法,举几个例子 # 这三个是常用属性...: 限速设置,对用户进行一定访问次数限制等等。...return self.list(request, *args, **kwargs) 在这个例子,继承了mixinsListModelMixin,get( )方法,调用了它list()方法,...viewset,还提供了两个以及与mixins绑定好ViewSet,当然,这两个ViewSet完全可以自己实现: class ReadOnlyModelViewSet(mixins.RetrieveModelMixin

    1K10
    领券