我在 Django 应用程序中遇到这个问题: 我的主要应用程序 urls 文件有这两行:
url(r'^root-pattern-1/', include('loan.urls')),
url(r'^root-pattern-2/', include('loan.urls')),
在我的 loan.urls 中有以下两个条目:
url(r'^search/$', Search.as_view(),
name='personal-loan-result', kwargs={'loantype': LOAN_TYPE_PERSONAL}),
url(r'^search/$', Search.as_view(loantype=LOAN_TYPE_CREDIT),
name='creditcard-loan-result', kwargs={'loantype': LOAN_TYPE_CREDIT}),
问题是,当我调用 reverse('creditcard-loan-result')
时,url 似乎没问题,但它调用的是名为“personal-loan-result”的 url,这是第一个入口。
我读了很多书,在这里的其他问题中看到选项包括我的带有空模式的 loan.urls 文件或更改 url 条目的顺序。
我还缺少其他选择吗?更改顺序在这种特定情况下不起作用,我不喜欢包含具有空模式的 url 的想法。
最佳答案
我不清楚你为什么两次包含 loan.urls
,如果我误解了你的问题,我深表歉意。
url(r'^search/$', Search.as_view(),
name='personal-loan-result', kwargs={'loantype': LOAN_TYPE_PERSONAL}),
url(r'^search/$', Search.as_view(loantype=LOAN_TYPE_CREDIT),
name='creditcard-loan-result', kwargs={'loantype': LOAN_TYPE_CREDIT}),
它们都用于相同的 url,/search/
。不管你调用reverse('personal-loan-result')
还是reverse('creditcard-loan-result')
,显示在浏览器只是/search/
,Django 将始终使用匹配的第一个 url 模式。
如果你想将结果定向到第二个模式,那么你需要两个不同的正则表达式,例如你可以使用 ^search/personal/$
和 ^search/credit/$
.
关于python - 重复模式,包含的 django url 中的名称不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902777/