当前位置: 代码迷 >> python >> Django - 如何正确添加反向 urlresolver
  详细解决方案

Django - 如何正确添加反向 urlresolver

热度:84   发布时间:2023-06-13 17:01:38.0

假设我有这个:

from django.core.urlresolvers import reverse
url = reverse('account-list')

假设这会导致 URL:`/account/list/'

如何添加到 URL? 我想将该 URL 设为: /account/list/1 (在其末尾添加一个 pk 值)。 我在这里知道: 它解释了如何添加 GET 参数(例如?pk=1但我想知道是否有适当的方法可以添加到URL(不使用 GET 参数))。

我正在使用 DRF 路由器: router = routers.DefaultRouter() router.register(r'users', views.UserViewSet) 并且用户详细信息视图采用 pk 值。 所以我想做 url = reverse('user-list') 并在它的末尾附加 /1 。

如果您对详细信息视图特别感兴趣,则不应使用account-list 假设您有一个单独的account-detail视图(当您使用默认的 ModelViewSets 时,Django Rest Framework 也会为您创建这些视图,就像使用account-list ):

from django.core.urlresolvers import reverse
u = reverse('account-detail', args=[1])

如果我正确理解您的问题,这将是解决此问题的正确方法。

您还可以处理命名的 URL 参数。 对于以下带有slug参数的 URL 规则:

url(r'/accounts/(?<slug>[a-fA-F0-9]+)/', name='account-detail', ...)

以下是您如何使用等于somethingslug反转帐户的详细信息视图:

from django.core.urlresolvers import reverse
u = reverse('account-detail', kwargs={'slug': 'something'})