测试中的NoReverseMatch

时间:2016-05-26 10:15:24

标签: python django

我在我的一个测试中遇到此错误:

NoReverseMatch: Reverse for 'plan' with arguments '()' and 
keyword arguments '{u'month': u'201604'}' not found. 
1 pattern(s) tried: ['plan(/(?P<month>[0-9]+))?$']

电话是

response = self.client.get(reverse('plan', kwargs={'month': '201604'}))

和urlpattern

url(r'^plan(/(?P<month>[0-9]+))?$', sp_views.plan, name='plan'),

我试图在不对网址进行硬编码的情况下调用/plan/201604。我做错了什么?

1 个答案:

答案 0 :(得分:2)

你需要使外部参数不被捕获:

url(r'^plan(?:/(?P<month>[0-9]+))?$', text, name='plan'),

就个人而言,我总觉得这很混乱,所以我更喜欢有两种网址模式。我还会在网址中包含一个尾部斜杠:

url(r'^plan/$', sp_views.plan, name='plan'),
url(r'^plan/(?P<month>[0-9]+)/$', sp_views.plan, name='plan'),