我在Django应用中遇到了这个问题: 我的主app 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')
时,网址似乎没问题,但是它正在调用名为“个人贷款结果”的网址,这是第一个条目。
我已经阅读了很多,并在其他问题中看到这些选项包括我的loan.urls文件,其中包含空模式或更改网址条目的顺序。
我还缺少一些其他选择吗?更改订单在这种特定情况下不起作用,我不喜欢用空图案包含网址。
答案 0 :(得分:1)
我不清楚为什么要包括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}),
这些都是针对相同的网址/search/
。无论您是呼叫reverse('personal-loan-result')
还是reverse('creditcard-loan-result')
,浏览器中显示的网址都只是/search/
,而Django将始终使用匹配的第一个网址模式。
如果要将结果定向到第二个模式,则需要两个不同的正则表达式,例如,您可以使用^search/personal/$
和^search/credit/$
。