复制模式,包含django URL中的不同名称

时间:2015-04-27 17:57:47

标签: python django url django-1.7

我在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文件,其中包含空模式或更改网址条目的顺序。 我还缺少一些其他选择吗?更改订单在这种特定情况下不起作用,我不喜欢用空图案包含网址。

1 个答案:

答案 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/$