• 当viewset中,多个action对应了不同的serializers的时候
class UserView(viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSeriallers def get_serializer_class(self):
if self.action in ['collection', ]:
return Serializers1
elif self.action in ['orderhouse', ]:
return Seriallers2
elif self.action in ['disperson', ]:
return Serializers3
return self.serializer_class
  • 当viewset中,多个action对应不同的permission
class AdviserView(viewsets.GenericViewSet):
queryset = Adviser.objects.all().order_by("-id")
serializer_class = AdviserSerializers
permission_classes = (AdviserPermission, ) def get_permissions(self):
if self.action in ["small_app_login", "decode_data",
"bind_phone"]:
self.permission_classes = ()
return super().get_permissions()
  • 如果不习惯class view的方式可以使用@api_view装饰器,对应的权限等class可以通过对应的装饰器添加
  • serializer中,使用SerializerMethodField,如果需要使用request的数据,可以通过 self.context['request'] 取出来,同样的,如果serializer中需要将request传到context, 使用serializers的时候 需要serializer = Serializer(qs, many=True, context={ 'request': request}) 的方式传入context
  • 当列表的serializer和详情的serializer的字段不同时,可以使用继承的方式,减少代码量

Django-rest-framework(八)使用技巧(持续补充中)的更多相关文章

  1. phpstorm 工具使用技巧(持续补充中。。。)

    phpstorm 工具使用技巧(持续补充中...) 一.phpstorm大小写切换 1.选择要转换的目标字符串: //普通商家,普通折扣默认值'COMMON_DISCOUNT'=>10.00, ...

  2. fastadmin 后台管理框架使用技巧(持续更新中)

    fastadmin 后台管理框架使用技巧(持续更新中) FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架,具体介绍,请查看文档,文档地址为:https://doc. ...

  3. Django(十八)Model操作补充

    参考博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html 1. 创建类 class UserInfo(model.Model): age = ...

  4. 来自平时工作中的css知识的积累---持续补充中

    ① 现代浏览器中,<img>元素默认情况下底部会有空白,那么这个空白到底是从哪里来的? 解惑: method-one:猛戳 来自知乎的解答 method-two: 延伸阅读 what is ...

  5. 08 Django REST Framework 解决前后端分离项目中的跨域问题

    01-安装模块 pip install django-cors-headers 02-添加到INSTALL_APPS中 INSTALLED_APPS = ( ... 'corsheaders', .. ...

  6. Js 过滤emoji表情...持续补充中..

    原文来自: https://www.cnblogs.com/tsjTSJ/p/7065544.html 最全最详细的用JS过滤Emoji表情的输入   在前端页面开发过程中,总会碰到不允许输入框输入e ...

  7. 来自平时工作中的javascript知识的积累---持续补充中

    ① SeaJs和RequireJS最大的区别 解惑:来自豆友 ② javascript中如何判断undefined var exp = undefined; if (exp === undefined ...

  8. linux常用小技巧(持续更新中)

    一.设置固定ip地址1.config查看用的是哪一个网卡这是假设用的是eth12.修改dns地址vim /etc/resolv.confsearch 域名地址nameserver 192.168.3. ...

  9. Android_实验小心得_持续补充中......

    1.LineLayout布局控件宽度百分比显示 其中,宽度百分比 = 控件权重 / 所在parent中所有控件权重和 <LinearLayout android:layout_width=&qu ...

随机推荐

  1. linux服务器git pull/push时避免频繁输入账号密码

    1.先cd到根目录,执行git config --global credential.helper store命令 [root@iZ25mi9h7ayZ ~]# git config --global ...

  2. 深入理解JavaScript系列(29):设计模式之装饰者模式

    介绍 装饰者提供比继承更有弹性的替代方案. 装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数). 装饰者用于通过重载方法的形式添加新功能 ...

  3. 【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输

    Server.java package com.huaxin.lesson02; import java.io.FileOutputStream; import java.io.InputStream ...

  4. 对于在gti操作遇见detached Head时

    1.什么是detached HEAD 在git中,这是一个处于”游离“状态的标签 2.使用git branch <new_branch_name> <HEAD_code> 为这 ...

  5. CSS3图片边框

    CSS3图片边框 顾名思义就是为边框应用背景图片,它和我们常用的background属性比较相似,语法规则:

  6. jdk时区相差8小时

    设置JVM的默认时区为东八区(北京时间)在下面四个目录(jre6\lib\zi\Etc.jre6\lib\zi.jdk1.6.0_18\jre\lib\zi\Etc.jdk1.6.0_18\jre\l ...

  7. js:JSON对象与JSON字符串转换

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式. 同时,JSON是 JavaScript 原生格式,这 ...

  8. SqlServer50条常用查询语句

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  9. python学习笔记(1)----python安装

    1.下载Python for windows 废话不说,直接上网址:https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe 2.安装Pytho ...

  10. yjh_study_command

    1.show current user in oralce ansower:show user 2.search  name of table  in current user model. answ ...