【问题标题】:django url name lookupdjango url 名称查找
【发布时间】:2012-03-04 14:20:34
【问题描述】:

我有三个 url 模式匹配到相同的 url 名称

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' 来获取这样的完整 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 名称匹配来解决这个问题。是否有其他方法可以解决此错误

谢谢

【问题讨论】:

  • 为什么需要多个同名视图?你试过给他们起不同的名字吗?
  • 另外,假设“ccicreport”应该像其他人一样是“report”,您可以按照Making a Regex Django URL Token Optional 的示例将它们合并为一个正则表达式。
  • @perelman 是的,这是一个错字 :),已更新。

标签: python django url-routing


【解决方案1】:

我认为问题在于report.applicationnumber 没有生成值:错误消息中的with arguments '('',)' 表示report.applicationnumber 的值是空的,在这种情况下url 标签会尝试匹配URL 模式 ^report/newreport//$ 在您的 URL 列表中不存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-15
    • 2014-09-22
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 2021-04-07
    相关资源
    最近更新 更多