视图集及路由

视图集是什么?

是一群逻辑操作的功能合集,并采用路由映射的方法进行功能选择

ModelViewSet

继承GenericAPIView,并包括用于各种动作实现方式,需要指定数据

1. ModelViewSet视图集功能及路由映射
# 使用ModelViewSet实现增删查改操作
from rest_framework.viewsets import ModelViewSet
class PeopleViewSet(ModelViewSet):
    queryset = People.objects.all() # 指定查询结果集
    serializer_class = PeopleSerializer2 # 指定序列化器
2.路由映射
 path('people2/',views.PeopleViewSet.as_view({'get':'list','post':'create'})),
    path('people2/<int:pk>/',views.PeopleViewSet.as_view({'get':'retrieve','put':'update','delete':'destroy'})),

DRF路由映射

简化路由

DefaultRouter路由生成

功能更强大,访问路由.json可以直接看到json格式返回

# 1.生成路由对象
router = routers.DefaultRouter()
# 2.使用路由对象生成路由
# 参数:1.路径名  2.调用视图集  3.给生成的路由起个名
router.register('people3',views.PeopleViewSet,'people3')
# 3.路由追加
urlpatterns += router.urls

生成的路由

[
	<URLPattern '^people3/$' [name='people3-list']>, 
	<URLPattern '^people3\.(?P<format>[a-z0-9]+)/?$' [name='people3-list']>, 
	<URLPattern '^people3/(?P<pk>[^/.]+)/$' [name='people3-detail']>,
	 <URLPattern '^people3/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$' [name='people3-detail']>, 
	 <URLPattern '^$' [name='api-root']>, 
	 <URLPattern '^\.(?P<format>[a-z0-9]+)/?$' [name='api-root']>
]

SimplaeRouter路由生成

注册路由

# 1.生成路由对象
router = routers.SimpleRouter()
# 2.使用路由对象生成路由
# 参数:1.路径名  2.调用视图集  3.给生成的路由起个名
router.register('people3',views.PeopleViewSet,'people3')
# 3.路由追加
urlpatterns += router.urls
print(router.urls)

生成的路由

[
<URLPattern '^people3/$' [name='people3-list']>, 
<URLPattern '^people3/(?P<pk>[^/.]+)/$'[name='people3-detail']>
]

两种路由生成方式区别
  • SimpleRouter`:最基本的路由映射方式,只会将视图集具备的混入类功能进行路由的生成
  • DefaultRouter:更加高级,包含有drf根页面的路由,不只是视图集所包含的视图部分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值