如何在Django中使用主键对URL进行反向操作

Atm*_*tma 5 python regex django http-post django-urls

我的应用程序具有以下网址条目:

url(r'^(?P<pk>\d+)/(?P<action>add|edit)/type/$', 'customer.views.edit', name='customer-edit'),
Run Code Online (Sandbox Code Playgroud)

我想反向发布到该网址。当我执行以下操作时,出现错误NoReverseMatch:

self.client.post(reverse('customer-edit'), {'something:'something'}, follow=True)
Run Code Online (Sandbox Code Playgroud)

这是完整的错误:NoReverseMatch:找不到带有参数“()”和关键字参数“ {}”的“ customer-edit”。

我需要反向传递args或kwargs吗?如果是这样,他们将如何匹配上面的网址?

Vic*_*res 5

要传递args给 url,您可以将一个名为argstype的变量传递tuplereverse

self.client.post(reverse('customer-edit', args=(1, 'add',)), {'something:'something'}, follow=True)
Run Code Online (Sandbox Code Playgroud)

另一个问题是dict有一个Syntax Error

self.client.post(reverse('customer-edit', args=(1, 'add',)), {'something' : 'something'}, follow=True)
Run Code Online (Sandbox Code Playgroud)

希望这对你有帮助!