Pho*_*nix 2 django django-rest-framework django-rest-viewsets
我正在阅读一段很长的代码。并被困在路由器和视图集如何自动配置其 URL 上。例如。views.py 文件是:
class UserViewSet(viewsets.ModelViewSet):
authentication_classes = (BasicAuthentication,SessionAuthentication)
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializer
queryset = User.objects.all()
Run Code Online (Sandbox Code Playgroud)
与router对应的url是:
router = DefaultRouter()
router.register(r'users',views.UserViewSet,basename='user')
urlpatterns = router.urls
Run Code Online (Sandbox Code Playgroud)
在上述情况下,视图集中不同操作的相应 url 是什么,即列出、创建、检索、更新、partial_update 和 destroy,如视图集上的 djangorestframework 文档中所述:http ://www.tomchristie.com/rest -framework-2-docs/api-guide/viewsets
当您注册视图集时,它将为上述情况生成以下 url 模式。
router.register(prefix='users', viewset=views.UserViewSet, basename='user')
Run Code Online (Sandbox Code Playgroud)
它遵循以下正则表达式模式
# Regex for list
r'^{prefix}{trailing_slash}$'
# Regex for detail
r'^{prefix}/{lookup}{trailing_slash}$'
Run Code Online (Sandbox Code Playgroud)
1.列表路由器允许诸如检索资源和创建资源http之类的方法。
2. 详细路由器允许诸如检索资源数据、更新资源数据、部分更新资源和删除资源等方法。getposthttpgetputpatchdelete
format我们还可以在使用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']>]
Run Code Online (Sandbox Code Playgroud)
参考: https: //github.com/encode/django-rest-framework/blob/master/rest_framework/routers.py
| 归档时间: |
|
| 查看次数: |
1687 次 |
| 最近记录: |