[英]NoReverseMatch error when using Django url template tag with optional parameters, but NOT when visiting the URL in the browser
我有一個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'),
在觀點中:
def main(request, city=None, state=None, zip=None):
在HTML中:
<a href="{% url "search:main" city='sadasd' state='ds' zip=12345 %}">Test</a>
在這種情況下,url像這樣工作,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.