1. 基于APIVIEW视图序列化

 

我们会发现两个类有好多重复的代码.所以我们引入了GenericAPIView (继承了APIView)

2.Generic ApiVIew和 ListModelMixin混合类

url路由配置

    url(r'school/$', views.SchoolView.as_view(), name='article-detail'),
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ListModelMixin

#学校视图(继承基础工具类阶段)
class SchoolView(GenericAPIView,ListModelMixin):
'''
GenericAPIView
只需要配置
queryset和serialize_class
'''
queryset = models.School.objects.all()
serializer_class = app01_serializer.SchoolSerializer def get(self,request,*args,**kwargs):
return self.list(request,*args,**kwargs)

输出结果:

 3. GenetricAPIView + RetrieveMixin  获取一条数据

    url(r'^comment/(?P<pk>\d+)/$', views.CommentDetailView.as_view()),
from rest_framework.mixins import RetrieveModelMixin

class CommentDetailView(GenericAPIView,RetrieveModelMixin):   #mixin混合类.

    queryset = models.Comment.objects.all()
serializer_class =app01_serializer.CommentSerializer def get(self,request,pk):
return self.retrieve(request,pk)

输出结果:

 4. GenericApiView + Mixin 增删改查.

# . 评论详情操作某一条数据

from rest_framework.mixins import RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin

class CommentDetailView(GenericAPIView,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin):   #mixin混合类.

    queryset = models.Comment.objects.all()
serializer_class =app01_serializer.CommentSerializer

  查:
def get(self,request,pk):
return self.retrieve(request,pk)

  
def delete(self,request,pk):
return self.destroy(request,pk) def perform_destory(self,instance):
instance.delete()
  改
def put(self,request,pk):
return self.update(request,pk)

输出结果:

OK

5.  ListCreateAPIView和RetreveUpdateDestory

# 5 ListCreateAPIVIew 和RetreveUpdateDestory
from rest_framework.generics import ListCreateAPIView,RetrieveUpdateDestroyAPIView class CommentView(ListCreateAPIView): #获取所有 , 添加.
queryset = models.Comment.objects.all()
serializer_class = app01_serializer.CommentSerializer class CommentDetailView(RetrieveUpdateDestroyAPIView): #改,查和删除
queryset = models.Comment.objects.all()
serializer_class = app01_serializer.CommentSerializer

输出结果:

 6. GenericViewSet   ( ListCreateAPIView和RetreveUpdateDestory

URL

    url(r'^comment/$', views.CommentView.as_view({
"get":"list",
"post":"create"
})), url(r'^comment/(?P<pk>\d+)/$', views.CommentView.as_view({
"get":"retrieve",
"put":"update",
"delete":"destroy"
})),
from rest_framework.viewsets import ModelViewSet
class CommentViewSet(ModelViewSet):
queryset = models.Comment.objects.all()
serializer_class = app01_serializer.CommentSerializer

S11 day 95 RestFramework 之 视图的更多相关文章

  1. rest-framework之视图

    rest-framework之视图 本文目录 一 基本视图 二 mixin类和generice类编写视图 三 使用generics 下ListCreateAPIView,RetrieveUpdateD ...

  2. S11 day 94 RestFramework 之 APIView视图

    VIEW视图(Django自带的) 1.  url url(r'login/$', views.login.as_view()), 2.点开 as_view() , as_view()为类方法.  l ...

  3. S11 day 96 RestFramework 之认证权限

    一.设计一个简易的登录 1. 建立一个模型 class UserInfo(models.Model): username =models.CharField(max_length=) password ...

  4. rest-framework框架——视图三部曲

    一.mixins类编写视图 1.配置url urlpatterns = [ ... re_path(r'^authors/$', views.AuthorView.as_view(), name=&q ...

  5. Django:RestFramework之-------视图

    10.视图 GenericAPIView封装一些方法,将这些方法返回值放在类变量位置上. 1.GenericAPIView视图示例:不怎么用 from api.utils.serializers.pa ...

  6. RestFramework之视图组件

    一.视图组件的使用 在我们自己书写视图类时需要不断书写重复冗余的代码,看起来十分繁琐不简洁易见,当然rest_framework中的视图组件帮我们做到了一些必要的步骤,使我们节省了编写冗余代码的时间. ...

  7. rest-framework之视图和源码解析

    视图和源码解析 通过使用mixin类编写视图: from rest_framework import mixins from rest_framework import generics class ...

  8. S11 day 93 RestFramework 之 序列化

    1. 表建模 from django.db import models # Create your models here. #文章表 class Article(models.Model): tit ...

  9. Django:RestFramework之-------认证

    3 restframework-认证 3.1APIView 认证: 认证是否已经登陆,如果已经登陆返回元组,如果没有登陆报错 源码流程: 执行dispatch方法: def dispatch(self ...

随机推荐

  1. PHP下ajax跨域的解决方案之CORS

    由于安全的限制(同源策略,javascript只能访问同域名下的内容),如果需要进行跨域操作,那就免不了要进行跨域.   CORS(跨域资源共享,Cross-Origin Resource Shari ...

  2. mybatis框架入门程序:演示通过mybatis实现数据库的查询操作

    我们现在工程基于的数据库见“https://www.cnblogs.com/wyhluckdog/p/10147754.html”这篇博文. 1.mybatis下载 mybatis的代码由githua ...

  3. Parallel.Foreach的基础知识

    微软的并行运算平台(Microsoft’s Parallel Computing Platform (PCP))提供了这样一个工具,让软件开发人员可以有效的使用多核提供的性能. Visual Stud ...

  4. Photoshop和Halcon中的极坐标变换

    极坐标想必学过高中数学的人都听过,一般的坐标系中用(x, y)值来描述一个点的位置,而在极坐标系中,则使用到原点的距离ρ和夹角θ来描述该点的位置. 我很早就接触了Photoshop,知道Photosh ...

  5. 解决Axure发布分享预览的3个方法

    公司的同事制作的一个产品原型,要发给我,我当时正在客户这里,电脑上并没有Axure,客户又催得急,感到一阵无奈.这次回来之后,经过一番摸索,发现还是有办法的.这里给大家分享一下Axure发布分享预览的 ...

  6. common常用到的类

    org.apache.commons.codec.digest.DigestUtils.md5Hex(String)    md5

  7. ejb 和pojo , jboss 和 tomcat

    EJB(企业JavaBeans)是普通JavaBeans的一种提升和规范,因为企业信息系统开发中需要一个可伸缩的性能和事务.安全机制,这样能保证企业系统平滑发展,而不是发展到一种规模重新更换一套软件系 ...

  8. td里的英文字母不会自动换行的问题

    今天发现一个问题,限制了TD的宽度之后,汉字会自动换行,但是英文却不会,在网上搜索一下,发现在TD里面加上style='word-break:break-all'这个样式之后,换行成功 <tab ...

  9. 2018.09.29 bzoj3039: 玉蟾宫(悬线法)

    传送门 悬线法的板子题. 悬线法只需要保存当期点向下最多多少个,把这个当成一条线,再处理出线绷直之后最多能向左右延展多少就行了. 代码: #include<bits/stdc++.h> # ...

  10. 浮点数转byte数组

    ; float b=34.56745f; float c=0.0; ,,,}; byte* t=fbs; float2Bytes(t,b); unsigned int addrF=(unsigned ...