REST framework之URL控制

一 自定义路由

1.1 原始方式

  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. def get(self, request):
  3. book_list = models.Book.objects.all()
  4. bs = BookSerializers(book_list, many=True)
  5. return Response(bs.data)
  6. def post(self, request):
  7. # 添加一条数据
  8. print(request.data)
  9. bs=BookSerializers(data=request.data)
  10. if bs.is_valid():
  11. bs.save() # 生成记录
  12. return Response(bs.data)
  13. else:
  14. return Response(bs.errors)
  15. class BookDetailView(APIView):
  16. def get(self,request,pk):
  17. book_obj=models.Book.objects.filter(pk=pk).first()
  18. bs=BookSerializers(book_obj,many=False)
  19. return Response(bs.data)
  20. def put(self,request,pk):
  21. book_obj = models.Book.objects.filter(pk=pk).first()
  22. bs=BookSerializers(data=request.data,instance=book_obj)
  23. if bs.is_valid():
  24. bs.save() # update
  25. return Response(bs.data)
  26. else:
  27. return Response(bs.errors)
  28. def delete(self,request,pk):
  29. models.Book.objects.filter(pk=pk).delete()
  30. return Response("")

二 半自动路由

2.1视图类继承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. ]
  1. from rest_framework.viewsets import ModelViewSet
  2. class PublishView(ModelViewSet):
  3. queryset=models.Publish.objects.all()
  4. serializer_class=PublishSerializers

三 全自动路由

3.1 自动生成路由

  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({
  10. 'get':'list',
  11. 'post':'create'
  12. })),
  13. # http://127.0.0.1:8000/publish.json(渲染器通过这个判断,返回渲染的页面)
  14. # url(r'^publish\.(?P<format>\w+)$', views.PublishView.as_view({
  15. 'get':'list',
  16. 'post':'create'
  17. })),
  18. # 可以用 以下方式访问
  19. # 1 http://127.0.0.1:8000/publish/
  20. # 2 http://127.0.0.1:8000/publish.json
  21. # 3 http://127.0.0.1:8000/publish/3
  22. # 4 http://127.0.0.1:8000/publish/3.json
  23. url(r'',include(router.urls))
  24. ]
  1. from rest_framework.viewsets import ModelViewSet
  2. class PublishView(ModelViewSet):
  3. queryset=models.Publish.objects.all()
  4. serializer_class=PublishSerializers

REST framework之URL控制的更多相关文章

  1. rest-framework解析器,url控制,分页,响应器,渲染器,版本控制

    解析器 1.json解析器 发一个json格式的post请求.后台打印: request_data---> {'title': '北京折叠'} request.POST---> <Q ...

  2. Django Rest Framework框架 ---- url控制器

    Django Rest Framework框架 ---- url控制器

  3. Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)

    一.url控制 基本路由写法:最常用 from django.conf.urls import url from django.contrib import admin from app01 impo ...

  4. DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)

    url控制 第二种写法(只要继承了ViewSetMixin) url(r'^pub/$',views.Pub.as_view({'get':'list','post':'create'})), #获取 ...

  5. django中的url控制

    1.django中的第一个控件:url控制  (路由分发) urls.py:请求路径与视图函数的之间的关系 步骤: 1.首先是要配置环境,   2.其次就是引路径   3.在视图的文件夹里面写相应的函 ...

  6. django rest framework 的url标签的问题

    如何在模板中引用一个在rest framework中的url? urls.py from django.conf.urls import patterns, url from .views impor ...

  7. 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版

    一.前言 多条件查询分页以及排序  每个系统里都会有这个的代码 做好这块 可以大大提高开发效率  所以博主分享下自己的6个版本的 多条件查询分页以及排序 二.目前状况 不论是ado.net 还是EF ...

  8. web项目自定义路由_实现静态资源URL控制

    前言: IIS会默认把:图片.JS.HTML.CSS这些文件当成静态资源处理,为了减少服务器压力,默认这些静态资源是不走URL路由规则控制的. 作为小白及初学者,本人对这些了解甚少,补充基础知识吧: ...

  9. uniGUI试用笔记(十五)通过URL控制参数

    通过URL代入参数,在代码中读取,如: http://localhost:8501/?ServerPort=212&&ServerIP=192.168.31.12 在代码中可以通过: ...

随机推荐

  1. 洛谷 P2983 [USACO10FEB]购买巧克力Chocolate Buying 题解

    P2983 [USACO10FEB]购买巧克力Chocolate Buying 题目描述 Bessie and the herd love chocolate so Farmer John is bu ...

  2. BZOJ4241 历史研究 【回滚莫队】

    题目描述:给出一个长度为\(n\)的数组,每次询问区间 \([l,r]\),求 \(\max\limits_{x}x*cnt_x\),其中 \(cnt_x\) 表示 \(x\) 在区间 \([l,r] ...

  3. 洛谷P2659 美丽的序列

    题目 该题目可以用辅助数组l[i], r[i]来指向以data[i]为最小值的左端点和右端点.然后最后枚举每个data[i]寻找每个data[i]的美丽值的最大值. 然后辅助数组可以用单调栈求出. # ...

  4. (LIS)最长上升序列(DP+二分优化)

    求一个数列的最长上升序列 动态规划法:O(n^2) //DP int LIS(int a[], int n) { int DP[n]; int Cnt=-1; memset(DP, 0, sizeof ...

  5. 不能对以下表使用 TRUNCATE TABLE

    1.由 FOREIGN KEY 约束引用的表.(您可以截断具有引用自身的外键的表.) 2.参与索引视图的表. 3.通过使用事务复制或合并复制发布的表. 4.对于具有以上一个或多个特征的表,请使用 DE ...

  6. 卷积神经网络CNN学习笔记

    CNN的基本结构包括两层: 特征提取层:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征.一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来: 特征映射层:网络的每个计算层由多 ...

  7. automapper 源中有多个属性类映射到同一个 目标中

    CreateMap<TempBranchActivity, BranchActivityOutput>() .ConstructUsing((src, ctx) => ctx.Map ...

  8. MyBatis你只写了接口为啥就能执行SQL啊?

    一.静态代理 又是一年秋招季,很多小伙伴开始去大城市打拼.来大城市第一件事就是租房,免不了和中介打交道,因为很多房东很忙,你根本找不到他.从这个场景中就可以抽象出来代理模式: ISubject:被访问 ...

  9. npm版本管理 命令

    npm采用了semver规范作为依赖版本管理方案.semver 约定一个包的版本号必须包含3个数字 MAJOR.MINOR.PATCH 意思是 主版本号.小版本号.修订版本号 MAJOR 对应大的版本 ...

  10. enq: DX – contention等待事件解决方法

    前几日,一测试环境在dblink单表同步的时候(不管怎么说,目前仍然是同构数据库同步性能最快的方法,别听网上的扯淡,无论goldengate还是java层,都是比较慢的),某张表一直同步不过去,看了一 ...