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

from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^books/$', views.BookView.as_view()),
url(r'^books/(?P<pk>\d+)$', views.BookDetailView.as_view()),
]
class BookView(APIView):

    def get(self, request):
book_list = models.Book.objects.all()
bs = BookSerializers(book_list, many=True)
return Response(bs.data) def post(self, request):
# 添加一条数据
print(request.data) bs=BookSerializers(data=request.data)
if bs.is_valid():
bs.save() # 生成记录
return Response(bs.data)
else: return Response(bs.errors) class BookDetailView(APIView):
def get(self,request,pk):
book_obj=models.Book.objects.filter(pk=pk).first()
bs=BookSerializers(book_obj,many=False)
return Response(bs.data)
def put(self,request,pk):
book_obj = models.Book.objects.filter(pk=pk).first() bs=BookSerializers(data=request.data,instance=book_obj)
if bs.is_valid():
bs.save() # update
return Response(bs.data)
else:
return Response(bs.errors)
def delete(self,request,pk):
models.Book.objects.filter(pk=pk).delete() return Response("")

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

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

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

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

最新文章

  1. Google 面试题和详解
  2. JS原型链简单图解
  3. C语言 二级指针内存模型③
  4. Eclipse高效率开发技巧
  5. WebDriverExtensionsByC#
  6. javascript面向对象事件继承
  7. EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
  8. hdu 4005 边连通度与缩点
  9. [置顶] P2P之我见,关于打洞的学问-------开篇
  10. 开源的Android视频播放器
  11. 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例
  12. Lucene 简单手记http://www.cnblogs.com/hoojo/archive/2012/09/05/2671678.html
  13. LeetCode Database题解
  14. jsonp跨域实现
  15. ERP中通过EDI导入资料的时候出现【Microsoft Office Excel不能访问文件‘C:\Windows\TEMP\433....’
  16. SEED实验——return-to-libc实验
  17. leetcode1:两数之和
  18. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像一
  19. 某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
  20. nodejs核心技术

热门文章

  1. cesium 雷达扫描(附源码下载)
  2. 一文彻底搞清楚 Material Design
  3. oracle 根据时间戳查询date类型sql
  4. redis 开源客户端下载
  5. leetcode题解:整数反转
  6. [C]副作用和序列点
  7. 关于中医的一段对话 [ZZ] -- 思维训练故事
  8. error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in
  9. 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)
  10. [Spring cloud 一步步实现广告系统] 4. 通用代码模块设计