问题描述
假设我有这个:
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 。
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', ...)
以下是您如何使用等于something
的slug
反转帐户的详细信息视图:
from django.core.urlresolvers import reverse
u = reverse('account-detail', kwargs={'slug': 'something'})