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. apache中开启rewrite

    1.在apache配置文件httpd.conf中找到如下行: #LoadModule rewrite_module modules/mod_rewrite.so 去掉该行前面的#号 2.在httpd. ...

  2. [z]kafka相关资料

    http://my.oschina.net/ielts0909/blog/93190 http://www.iteye.com/magazines/107 http://blog.csdn.net/h ...

  3. [Selenium]Eclipse hangs at 57% in debug mode with TestNG tests

    案例1: I am very thankful to saish and cbeust for the solution. I went through the similar issue with ...

  4. DB2错误码

    SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 + 未限定的列名被解释为一个有相互联系的引用 + 动态SQL语句用分号结束 + 没有找到满足SQL语句的行 + 用DATA CAPTUR ...

  5. 《JavaScript高级程序设计》笔记

    1. 当在函数内部定义了其他函数时,就创建了闭包.闭包有权访问包含函数内部的所有变量. 2. 闭包可以分隔变量空间,不会占用全局空间而造成相互间的干拢.使用闭包可以在JavaScript中模仿块级作用 ...

  6. java bulid path 和 WEB-INF/lib 下jar 包区别

    用Java Build Path导入包和把包复制到lib下是有区别的,它俩其实不会冲突,也没有什么关系的, Java Build Path是我们编译需要的包, 导入到lib下是程序运行时需要的包 ,  ...

  7. Android Activity切换(跳转)时出现黑屏的解决方法

    在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在 ...

  8. document.body和document.documentElement区别

    1.document.documentElement表示文档节点树的根节点,即<html> document.body是body节点 2. 页面具有 DTD,或者说指定了 DOCTYPE ...

  9. mysql数据库中如何查询日期在两个时间之间的关系

    select * from banner where addDate between '2017-06-04' and '2017-06-06';

  10. hdu-1173(最短距离)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1173 思路:最短距离:就是现将x,y从小到大排序,然后去中间点就行了.(注意:本题答案不唯一) #in ...