基于Django的Rest Framework框架的url控制器
2024-10-17 22:40:15
一 自定义路由(原始方式)
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
最新文章
- Google 面试题和详解
- JS原型链简单图解
- C语言 二级指针内存模型③
- Eclipse高效率开发技巧
- WebDriverExtensionsByC#
- javascript面向对象事件继承
- EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
- hdu 4005 边连通度与缩点
- [置顶] P2P之我见,关于打洞的学问-------开篇
- 开源的Android视频播放器
- 【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例
- Lucene 简单手记http://www.cnblogs.com/hoojo/archive/2012/09/05/2671678.html
- LeetCode Database题解
- jsonp跨域实现
- ERP中通过EDI导入资料的时候出现【Microsoft Office Excel不能访问文件‘C:\Windows\TEMP\433....’
- SEED实验——return-to-libc实验
- leetcode1:两数之和
- OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像一
- 某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
- nodejs核心技术
热门文章
- cesium 雷达扫描(附源码下载)
- 一文彻底搞清楚 Material Design
- oracle 根据时间戳查询date类型sql
- redis 开源客户端下载
- leetcode题解:整数反转
- [C]副作用和序列点
- 关于中医的一段对话 [ZZ] -- 思维训练故事
- 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
- 利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)
- [Spring cloud 一步步实现广告系统] 4. 通用代码模块设计