我有一个需要考虑以下模式的网址:
当我在浏览器中输入任何这些网址时,它们都按预期工作。但是,当我尝试从Django的网址模板标记引用此网址时,我收到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
答案 0 :(得分:1)
这不是更好的解决方案,这是解决方案之一
url(r'^staffing-agencies/(?P<city>[a-zA-Z]+)*-(?P<state>[a-zA-Z]{2})*?(?P<zip>[0-9]{5})*?$',
'views.main', name='main'),
在观点中:
def main(request, city=None, state=None, zip=None):
in html:
<a href="{% url "search:main" city='sadasd' state='ds' zip=12345 %}">Test</a>
在这种情况下,url就像这样工作,