gpt4 book ai didi

django - 路由器和 View 集如何配置它们的 url?

转载 作者:行者123 更新时间:2023-12-02 17:00:10 25 4
gpt4 key购买 nike

我正在通读一段很长的代码。并且被困在路由器和 View 集如何自动配置它们的 URL 上。例如。views.py 文件是:

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

router对应的url为:

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

在上述情况下, View 集中不同操作的相应 URL 是什么,即列表、创建、检索、更新、partial_update 和销毁,如 View 集上的 djangorestframework 文档中所述:http://www.tomchristie.com/rest-framework-2-docs/api-guide/viewsets

最佳答案

当您注册 View 集时,它将为上述情况生成以下 url 模式。

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. Detail router允许http方法,比如get获取资源数据,put更新资源数据, patch 用于部分更新资源,delete 用于删除资源。

我们还可以在使用 reverse 生成动态 url 时传递一个额外的关键字参数 format

上述情况的 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

关于django - 路由器和 View 集如何配置它们的 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54528149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com