2012-02-13 100 views
1

我有三个URL模式匹配相同的URL名称Django的网址名称查找

url(r'^report/newreport/(?P<number>\w+)/$', 'report.views.newreport',name='report_newreport'), 
url(r'^report/newreport/(?P<number>\w+)/(?P<edit>\w+)/$', 'report.views.newreport',name='report_newreport'),   
url(r'^report/newreport/$', 'report.views.newreport',name='report_newreport'), 

当我试图用“网址”来获得完整的URL这样

<td><a href='{% url report_newreport report.applicationnumber %} ' target='_blank' >{{task.applicationnumber}}</a> <br/> 

我得到了一个错误

Caught NoReverseMatch while rendering: Reverse for 'report_newreport' with arguments '('',)' and keyword arguments '{}' not found. 

这是因为我将三个url匹配到一个url名称?我认为通过将这三种模式匹配到三个不同的url名称可以解决这个问题。那是另一种方式,我可以解决这个错误

感谢

+1

为什么你需要有多个同名的视图?你有没有尝试给他​​们不同的名字? – perelman 2012-02-13 05:59:07

+1

此外,假设“ccicreport”应该像其他人一样“报告”,您可以按照[制作正则表达式Django URL令牌可选]的示例将它们合并为一个正则表达式(http://stackoverflow.com/q/2325433)。 – perelman 2012-02-13 06:01:46

+0

@perelman是的,这是一个错字:),更新。 – icn 2012-02-13 06:04:13

回答

1

我认为这个问题是一个事实,即report.applicationnumber不产生价值:在错误消息with arguments '('',)'表明report.applicationnumber的值是空在这种情况下, url标记会尝试匹配网址列表中不存在的网址格式^report/newreport//$