【问题标题】:Duplicate pattern, different name in included django url重复的模式,包含的 django url 中的名称不同
【发布时间】:2015-04-27 17:57:47
【问题描述】:

我在 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 的想法。

【问题讨论】:

    标签: python django url django-1.7


    【解决方案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}),
    

    它们都用于相同的 URL,/search/。不管你调用reverse('personal-loan-result') 还是reverse('creditcard-loan-result'),浏览器中显示的url 就是/search/,Django 总是使用第一个匹配的url 模式。

    如果您想将结果导向第二个模式,那么您需要两个不同的正则表达式,例如您可以使用^search/personal/$^search/credit/$

    【讨论】:

    • 这两个包含是因为我们希望包含贷款应用程序网址的仅有两种情况,我知道解决方案可能是始终包含 loan.urls(使用和空模式)显示的 url在浏览器中将是/root-pattern-1/search//root-pattern-2/search/
    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 2012-11-27
    • 2015-04-21
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2018-10-03
    • 2019-06-14
    相关资源
    最近更新 更多