gpt4 book ai didi

python - 使用带有可选参数的 Django url 模板标记时出现 NoReverseMatch 错误,但在浏览器中访问 URL 时出现错误

转载 作者:行者123 更新时间:2023-11-28 18:42:40 24 4
gpt4 key购买 nike

我有一个 URL 需要考虑以下模式:

  • localhost:8000/staffing-agencies
  • localhost:8000/staffing-agencies/90210(邮政编码)
  • localhost:8000/staffing-agencies/portland-or (city-state)

当我在浏览器中输入这些 URL 中的任何一个时,它们都按预期工作。但是,当我尝试从 Django 的 url 模板标记引用此 URL 时,出现了 NoReverseMatch 错误。

这是我的相关 url.py 文件:

# From urls.py
urlpatterns = patterns('',
url(r'^', include('bos.apps.search.urls', namespace='search',
app_name='search')),
)

# From search/urls.py
urlpatterns = patterns('bos.apps.search',
url(r'^staffing-agencies/'
r'((?P<city>[a-zA-Z]+)-(?P<state>[a-zA-Z]{2}))?'
r'((?P<zip>[0-9]{5}))?$',
'views.main', name='main'),
)

我认为这可能与可选参数有关,但所有这些差异都会引发 NoReverseMatch 错误:

<a href="{% url "search:main" zip=97214 %}">Test</a>
<a href="{% url "search:main" city="portland" state="or" %}">Test</a>

此方差不会引发错误:

<a href="{% url "search:main" %}">Test</a>

我正在使用 Django 1.6.5

最佳答案

这不是更好的解决方案,这是解决方案之一

url(r'^staffing-agencies/(?P<city>[a-zA-Z]+)*-(?P<state>[a-zA-Z]{2})*?(?P<zip>[0-9]{5})*?$',
'views.main', name='main'),

在 View 中:

def main(request, city=None, state=None, zip=None):

在 html 中:

<a href="{% url "search:main"  city='sadasd' state='ds' zip=12345 %}">Test</a>

在这种情况下,url 是这样工作的,

  • localhost:8000/staffing-agencies
  • localhost:8000/staffing-agencies/-90210(邮政编码)
  • localhost:8000/staffing-agencies/portland-or (city-state)

关于python - 使用带有可选参数的 Django url 模板标记时出现 NoReverseMatch 错误,但在浏览器中访问 URL 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com