首页 > 其他 > 详细

教程4-视图集合路由

时间:2019-03-20 11:46:35      阅读:114      评论:0      收藏:0      [点我收藏+]

rest框架包括一个处理viewset的抽象,允许开发人员集中精力处理api交互和建模,url构造都根据常见方式自动处理。

ViewSet类 几乎和VIew类一样,不过它提供read,update这样的操作,而不是get,put。

Refactoring to use ViewSets

现在来重构之前的view代码。首先把CourseList和CourseDetail重构为一个简单的CourseViewSet。

from rest_framework import viewsets

from .models import Course
from .serializer import CourseSerializer


class CourseViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list` and `detail` actions.
    """
    queryset = Course.objects.all()
    serializer_class = CourseSerializer

  

Binding ViewSets to URLs explicitly

viewset只是带进了一组action,比如list,create等。

在url中,把http方法绑定到相关的动作上。请求get,就路由到list,请求post action,就请求道create action。

courseList = views.CourseViewSet.as_view({
    "get": "list",
    "post": "create"
})

courseDetail = views.CourseViewSet.as_view({
    "get": "retrieve",
    "put": "update",
    "delete": "destroy"
})

urlpatterns = [
    path(‘admin/‘, xadmin.site.urls),
    path(‘course/‘, courseList,name=‘course_list‘),
    path(‘course/<int:pk>/‘, courseDetail ,name=‘course_detail‘),
]
urlpatterns = format_suffix_patterns(urlpatterns)

  

Using Routers

使用routers,需要做的是使用路由器注册适当的视图集,而其余的资源连接可以使用Router类自动处理。

可见,course资源相关的,只需要一个url,其他router会自动处理。

from django.urls import path,include
from rest_framework.routers import DefaultRouter
from courses import views
import xadmin

router = DefaultRouter()
router.register(‘course‘, views.CourseViewSet)

urlpatterns = [
    path(‘admin/‘, xadmin.site.urls),
    path(‘‘, include(router.urls)),
]

  

 

教程4-视图集合路由

原文:https://www.cnblogs.com/jabbok/p/10563876.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!