Django - 如何正确添加以反向urlresolver

时间:2015-10-24 22:08:54

标签: python django django-urls

假设我有这个:

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

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

如何添加到网址?我想将此网址设为:/account/list/1(在其末尾添加pk值)。我在这里知道:Including a querystring in a django.core.urlresolvers reverse() call它解释了如何添加GET参数(例如?pk=1但我想知道是否有适当的方法来添加到URL(不使用GET参数))

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

1 个答案:

答案 0 :(得分: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(r'/accounts/(?<slug>[a-fA-F0-9]+)/', name='account-detail', ...)

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

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