如何路由器和viewsets配置他们的网址吗?

问题描述 投票:0回答:1

我在读经历了漫长的一段代码。并停留在如何路由器和viewsets自动配置它们的网址。对于如。在views.py文件:

class UserViewSet(viewsets.ModelViewSet):
     authentication_classes = (BasicAuthentication,SessionAuthentication)
     permission_classes = (IsAuthenticated,)
     serializer_class = UserSerializer
     queryset = User.objects.all()

与路由器相应的URL:

router = DefaultRouter()
router.register(r'users',views.UserViewSet,basename='user')
urlpatterns = router.urls

在上述情况下,这将是在viewsets不同的动作,即列表中的相应的网址,创建,检索,更新,partial_update并摧毁对viewsets的djangorestframework文档中提到:http://www.tomchristie.com/rest-framework-2-docs/api-guide/viewsets

django django-rest-framework django-rest-viewsets
1个回答
0
投票

当您注册的视图集就会产生上述情况的以下网址模式。

router.register(prefix='users', viewset=views.UserViewSet, basename='user')

它遵循下面的正则表达式模式

# Regex for list
r'^{prefix}{trailing_slash}$'
# Regex for detail
r'^{prefix}/{lookup}{trailing_slash}$'

1.列出路由器允许像http get方法来检索资源和post创建资源。 2.详细路由器允许像http get方法来检索一个资源,put的数据来更新资源,patch到资源和delete删除的资源的部分更新的数据。

同时采用format生成动态的URL我们也可以通过一个额外的关键字参数reverse

URL模式的上述情况

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

参考:https://github.com/encode/django-rest-framework/blob/master/rest_framework/routers.py

© www.soinside.com 2019 - 2024. All rights reserved.