python - 重复模式,包含的 django url 中的名称不同

标签 python django url django-1.7

我在 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/

相关文章:

ios - 自定义 URL 方案 RubyMotion

python - 机器人框架: Create template

python - 我该如何用 Python 3.3.2 编写这个程序?

python - Django 休息框架。检索的工作原理

django - 无法执行 gunicorn_start EACCES

python - PyQt:setStyleSheet url() 中的特殊字符

php - 如何获取上传到 FTP 服务器的文件的 HTTP URL

python - Python 类中的列表在 2 个不同的实例上共享同一个对象?

python - 搞砸了 numpy 安装 - `GFORTRAN_1.4' 未找到错误

django - 从按最新排序的查询集中获取不同的 Django 对象