一 自定义路由(原始方式)

  1. from django.conf.urls import url
  2. from app01 import views
  3. urlpatterns = [
  4. url(r'^books/$', views.BookView.as_view()),
  5. url(r'^books/(?P<pk>\d+)$', views.BookDetailView.as_view()),
  6. ]
  1. class BookView(APIView):
  2.  
  3. def get(self, request):
  4. book_list = models.Book.objects.all()
  5. bs = BookSerializers(book_list, many=True)
  6. return Response(bs.data)
  7.  
  8. def post(self, request):
  9. # 添加一条数据
  10. print(request.data)
  11.  
  12. bs=BookSerializers(data=request.data)
  13. if bs.is_valid():
  14. bs.save() # 生成记录
  15. return Response(bs.data)
  16. else:
  17.  
  18. return Response(bs.errors)
  19.  
  20. class BookDetailView(APIView):
  21. def get(self,request,pk):
  22. book_obj=models.Book.objects.filter(pk=pk).first()
  23. bs=BookSerializers(book_obj,many=False)
  24. return Response(bs.data)
  25. def put(self,request,pk):
  26. book_obj = models.Book.objects.filter(pk=pk).first()
  27.  
  28. bs=BookSerializers(data=request.data,instance=book_obj)
  29. if bs.is_valid():
  30. bs.save() # update
  31. return Response(bs.data)
  32. else:
  33. return Response(bs.errors)
  34. def delete(self,request,pk):
  35. models.Book.objects.filter(pk=pk).delete()
  36.  
  37. return Response("")

二 半自动路由(视图类继承ModelViewSet)

  1. from django.conf.urls import url
  2. from app01 import views
  3. urlpatterns = [
  4. url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})),
  5. url(r'^publish/(?P<pk>\d+)/$', views.PublishView.as_view({'get':'retrieve','put':'update','delete':'destroy'})),
  6.  
  7. ]
  1. from rest_framework.viewsets import ModelViewSet
  2. class PublishView(ModelViewSet):
  3. queryset=models.Publish.objects.all()
  4. serializer_class=PublishSerializers

三 全自动路由(自动生成路由)

  1. from django.conf.urls import url,include
  2. from app01 import views
  3. from rest_framework import routers
  4. router=routers.DefaultRouter()
  5. # 两个参数,一个是匹配的路由,一个是视图中写的CBV的类
  6. router.register('publish',views.PublishView)
  7. urlpatterns = [
  8. # http://127.0.0.1:8000/publish/format=json(渲染器通过这个判断,返回渲染的页面)
  9. # url(r'^publish/', views.PublishView.as_view({'get':'list','post':'create'})),
  10. # http://127.0.0.1:8000/publish.json(渲染器通过这个判断,返回渲染的页面)
  11. # url(r'^publish\.(?P<format>\w+)$', views.PublishView.as_view({'get':'list','post':'create'})),
  12.  
  13. # 可以用 以下方式访问
  14. # 1 http://127.0.0.1:8000/publish/
  15. # 2 http://127.0.0.1:8000/publish.json
  16. # 3 http://127.0.0.1:8000/publish/3
  17. # 4 http://127.0.0.1:8000/publish/3.json
  18. url(r'',include(router.urls))
  19. ]
  1. from rest_framework.viewsets import ModelViewSet
  2. class PublishView(ModelViewSet):
  3. queryset=models.Publish.objects.all()
  4. serializer_class=PublishSerializers

基于Django的Rest Framework框架的url控制器的更多相关文章

  1. 基于Django的Rest Framework框架的版本控制

    本文目录 一 作用 二 内置的版本控制类 三 局部使用 四 全局使用 五 示例 源码分析 回到目录 一 作用 用于版本的控制 回到目录 二 内置的版本控制类 from rest_framework.v ...

  2. 基于Django的Rest Framework框架的RESTful规范研究

    一.什么是RESTful规范 总的来说:RESTful规范就是一个非技术,人为约定的一个面向资源的架构理念. REST与技术无关,代表的是一种软件架构风格,REST是Representational ...

  3. 基于Django的Rest Framework框架的解析器

    本文目录 一 解析器的作用 二 全局使用解析器 三 局部使用解析器 四 源码分析 回到目录 一 解析器的作用 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有appli ...

  4. 基于Django的Rest Framework框架的认证组件

    0|1一.认证组件的作用 在一个程序中有一些功能是需要登录才能使用的,原生Django中的auth组件可以用来解决这个认证问题,drf框架中也有对应的认证组件来解决这个问题. models.py   ...

  5. 基于Django的Rest Framework框架的序列化组件

    本文目录 一 Django自带序列化组件 二 rest-framework序列化之Serializer 三 rest-framework序列化之ModelSerializer 四 生成hypermed ...

  6. 基于Django的Rest Framework框架的视图组件

    本文目录 一 基本视图 二 mixin类和generice类编写视图 三 使用generics 下ListCreateAPIView,RetrieveUpdateDestroyAPIView 四 使用 ...

  7. 基于Django的Rest Framework框架的分页组件

    本文目录 一 简单分页(查看第n页,每页显示n条) 二 偏移分页(在第n个位置,向后查看n条数据) 三 CursorPagination(加密分页,只能看上一页和下一页,速度快) 回到目录 一 简单分 ...

  8. 基于Django的Rest Framework框架的响应器

    本文目录 一 作用 二 内置渲染器 三 局部使用 四 全局使用 五 自定义显示模版 回到目录 一 作用 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件.用户请求URL:    ht ...

  9. 基于Django的Rest Framework框架的频率组件

    0|1一.频率组件的作用 在我们平常浏览网站的时候会发现,一个功能你点击很多次后,系统会让你休息会在点击,这其实就是频率控制,主要作用是限制你在一定时间内提交请求的次数,减少服务器的压力. modle ...

随机推荐

  1. Dynamics 365-当OrganizationServiceProxy是Null的时候

    不少从事D365研发工作的朋友,可能或多或少都经历过这么一种情况,使用CrmServiceClient对象初始化一个实例,然后发现OrganizationServiceProxy对象是null.不仅如 ...

  2. 从0使用Ruby on Rails打造企业级RESTful API项目实战之我的云音乐

    本节对我们项目实现的功能和知识点做一个简单的介绍,因为是RESTful API项目,所以对于后端来说基本上没有什么UI界面可展示,那我们就在关键的点,使用客户端(Android)实现的效果图. 课程简 ...

  3. JEB 无源码调试 以dvm smali字节码方式,Demo尝试

    关于调试器看不到进程,无法attach的问题,网上也有很多教程,基本是修改ro.debugable =1  ,ro.secure = 0 让adbd有root权限 attach到其他进程,涉及到要修改 ...

  4. CentOS连接Wifi

    原文地址:https://blog.csdn.net/zhuangm_888/article/details/53868451   1. 查看是否需要安装固件 大多无线网卡还需要固件.内核一般会自动探 ...

  5. Centos8_本地Yum源配置

    一.先将iso镜像文件挂载 mount /dev/cdrom /mnt 将cdrom挂载到/mnt下 二.编辑挂载文件 cp -a /mnt/media.repo /etc/yum.repos.d/ ...

  6. C#的语法----程序结构(2)

    接下来我们继续学习程序流程控制的语法! switch-case 用来处理多条件的定值的判断. 语法: switch(变量或者表达式的值) { case value1:要执行的代码1: break; c ...

  7. bzoj5093图的价值:多项式,斯特林数(二项式反演)

    Description “简单无向图”是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向图的价值之和. 因为 ...

  8. ansible执行带有环境变量的脚本不生效

    1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...

  9. 【ST开发板评测】使用Python来开发STM32F411

    前言 板子申请了也有一段时间了,也快到评测截止时间了,想着做点有意思的东西,正好前一段时间看到过可以在MCU上移植MicroPython的示例,就自己尝试一下,记录移植过程. MicroPython是 ...

  10. 03-JVM-垃圾回收算法

    1.JVM内存分配与回收 1.1 对象优先在Eden区进行分配 堆中存储的对象,大多数情况下优先存储在Eden区,当Eden区存满没有足够的空间的时候,虚拟机将进行一次minorGC.当满足一定条件以 ...