zoukankan      html  css  js  c++  java
  • 【Python web 开发】django rest framwork动态设置权限premission

    首先我们来看下我们写的用户usersViewSet

    新建用户,获取用户信息详情,修改用户详情,是共用同一个viewset,但是新建用户是不需要 用户token的,获取详情和修还用户信息是需要用户的token的

    但是又是共用同一个配置,那怎么办呢? 于是就引进了 动态化配置premisetion

    mixins.RetrieveModelMixin 是获取用户详情的 view

    获取用户信息 前端是要在请求的url里面带一个user_id 过来的,这个有两种方式
    1、用户登录成功在 返回一个
    user_id给前端,前端再请求用户信息的时候带着这个id 过来
    2、不用前端传递id ,后台重写get_object 方法获取当前请求的user
    如何来动态配置premisstion?
    我们来看源码
    viewsets.GenericViewSet---generics.GenericAPIView---views.APIView  进来 testvirLibsite-packages
    est_frameworkviews.py

    看源码:get_premisstion()方法 主要是 遍历我们配置的premisstion class ,返回的premisstion class 的一个实例也是对象,可能会有多个,所以返回的是一个数组

    那我们就来重写 get_premisstion()方法

    action 是与函数名保持一致的,放在self 中,只有viewset 是这样,如果使用api view 就不会这样了

    动态配置premisstion 就解决了。

     
     



  • 相关阅读:
    简单SSM配置详解
    Nginx 简介
    序列化与反序列化
    用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
    Linux
    jsp标签精华(持续更新中)
    ZooKeeper 编程(一)
    maven环境快速搭建
    Web项目--------原Oracle数据库的项目同时兼容MySql
    JavaMail实现邮箱之间发送邮件功能
  • 原文地址:https://www.cnblogs.com/yuanyuan2017/p/10161844.html
Copyright © 2011-2022 走看看