mixins,generics(ApiView)
#生成序列化对象
class BookModelSerizter(serializers.ModelSerializer):
class Meta:
model=Book
fields='__all__'
##下面相当于是加个连接url,当你访问那个url的时候,就进行反向解析这个url
# author = serializers.HyperlinkedIdentityField(
# view_name='book_detail', ##反向解析
# lookup_field='author_id', ##这里是取这个id值,当你循环到那个外键的那个id值的值的时候,作为参数传进去
# lookup_url_kwarg='pk' ##把还是那个面的id作为参数传进去,就是在url路由里面的有名分组
# )
author=serializers.HyperlinkedIdentityField(
view_name="book_detail",
lookup_field="author_id",
lookup_url_kwarg="pk"
)
#整个流程的基础是基于apiview执行的
from rest_framework import mixins
from rest_framework import generics
class book(mixins.ListModelMixin,mixins.CreateModelMixin,generics.GenericAPIView):#首先从前面开始执行,到后面是进行调用这前面的方法
####之前的list的方法会找到下面的get_queryset,但里面是没有的,具会去子类里面去找,最终会找到GenericAPIView里面的get_queryset的方法,self.query=get_queryset,最终就是自己定义的下面的query方法
queryset = Book.objects.all()
serializer_class=BookModelSerizter
##拿到这个自定的序列化的类的对象 def get(self, request, *args, **kwargs):###得到所有的数据,调用下面的方法
return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs):##创建数据,调用下面的方法create
return self.create(request, *args, **kwargs) class bookdetail(mixins.RetrieveModelMixin,mixins.DestroyModelMixin,mixins.UpdateModelMixin,generics.GenericAPIView):
##注明一下,这个第一个是得到数据,第二个是删除单条数据,第三个是修改数据,最后执行这个GenericAPIView,里面进行了得到这个queryset,modelobj对象的处理,在这里最终执行的操作
queryset = Book.objects.all()
serializer_class = BookModelSerizter
##调用父类的序列化的方法,serializer_class 在GenericAPIView类下面有做处理
def get(self,request,*args,**kwargs):
#得到数据单条数据
return self.retrieve(request,*args,**kwargs)##执行下面的函数部分,调用这个函数 def delete(self,request,*args,**kwargs):
#删除数据单条数据
return self.destroy(request,*args,**kwargs)#调用DestroyModelMixin类下面的destory方法
def put(self,request,*args,**kwargs):
#修改数据,update的操作(修改单条数据)
return self.retrieve(request,*args,**kwargs)
mixins,generics(ApiView)的更多相关文章
- 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型
Data base: 长期存储在计算机内,有组织的,可共享的大量数据集合.基本特征:永久存储,可共享,有一定的物理和逻辑结构. Data base manage system(DBMS):用户和os之 ...
- 设备模型(device-model)之平台总线(bus),驱动(driver),设备(device)
关于关于驱动设备模型相关概念请参考<Linux Device Drivers>等相关书籍,和内核源码目录...\Documentation\driver-model 简单来说总线(bus) ...
- iOS开发——网络篇——UIWebview基本使用,NSInvocation(封装类),NSMethodSignature(签名),JavaScript,抛异常,消除警告
一.UIWebView简介 1.UIWebView什么是UIWebViewUIWebView是iOS内置的浏览器控件系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但 ...
- Unit02-OOP-对象和类,数组(下)
Unit02-OOP-对象和类,数组(下) 1.方法的签名: 方法名+参数列表 2.方法的重载(Overload): 1)发生在一个类中,方法名称相同,参数列表不同 2)编译器在编译时自动根据签名 ...
- 想了解JAVA的,看看(转载)
较新一篇 / 较旧一篇 编辑 |删除 | 复制链接 公开 想了解JAVA的,看看(转载)2009-03-01 15:41 (分类:默认分类) 先总结一下: J2SE (Core/Desktop) ...
- 蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)
蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)下载 >>>>>>>>>>>>>>>>>> ...
- 你好,C++(36)人参再好,也不能当饭吃!6.3 类是如何面向对象的
6.3 类是如何面向对象的 类作为C++与面向对象思想结合的产物,作为面向对象思想在C++中的载体,它的身上流淌着面向对象的血液.从类成员的构成到类之间的继承关系再到虚函数,到处都体现着面向对象封装 ...
- 你好,C++(7)第三部分 C++世界众生相 3.2.1 变量的定义与初始化
第3部分 C++世界众生相 在听过了HelloWorld.exe的自我介绍,完成了与C++世界的第一次亲密接触后,大家是不是都急不可待地想要一试身手,开始编写C++程序了呢?程序的两大任务是描述数据和 ...
- Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象,
Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象, 一.类 在ios中,类的声明和实现时分离的,也就是说不能写在同一个文件中,声明放在 .h文件中,实现放在 .m 文 ...
随机推荐
- android的android.intent.action.MAIN
当我们使用Android Studio创建一个工程并生成一个Activity时,经常可以在清单文件中看到如下的代码 android.intent.action.MAIN:决定应用的入口Activity ...
- extjs.net Combox赋值
1.直接赋值 ].Rows) //遍历获取两个值 { Ext.Net.ListItem listItem = new Ext.Net.ListItem(); //每次创建一个Ext.Net.ListI ...
- sqlserver导入execl
一.找到导入导出的工具 找到安装目录 C:\Program Files\Microsoft SQL Server\100\DTS\Binn 里面的DTSWizard.exe 二.打开exe 然后下一步 ...
- Nmap扫描基础常用命令(包含进阶使用)
Nmap扫描常用命令 - Nmap scans common commands 1.扫描单个目标 nmap ip 如:nmap 192.168.0.101 2.扫描多个目标 nmap ip1 ip2 ...
- CF961G Partitions
传送门 luogu 显然每个数的贡献可以一起算感性理解一下,于是答案就是权值总和乘以每个数被算了几次 那个"集合大小为\(|S|\)的集合权值为权值和乘\(|S|\)",可以看成一 ...
- 第28月第3天 c语言读写文件
1. int ConfigIniFile::OpenFile( const char* szFileName ) { FILE *fp; size_t nLen; int nRet; CloseFil ...
- SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享
1. 查询所有存储过程 1 select Pr_Name as [存储过程], [参数]=stuff((select ','+[Parameter] 2 from ( 3 select Pr.Name ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...
- react-踩坑记录——iconfont
选取图标,添加至购物车后,下载代码. 后将下载了的文件夹改名,放入css文件夹中.在组件中使用到的时候按路径引入“iconfont.css”文件即可. 使用
- java.lang.IllegalStateException: Ambiguous mapping found
原因:Controller 出现相同的url映射 参考: https://blog.csdn.net/u010892841/article/details/52136256