NoReverseMatch
我正在尝试使用以下网址制作一个基本网站
/congregation/ - home page
/congregation/archives - archives for that page
有多个'会众',每个都有一个存档页面。
我有以下网址模式:
教会/ urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls, name='admin'),
url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
url(r'^', include('congregation.urls', namespace='congregation')),
]
教会/众/ urls.py
page_patterns = [
url(r'^$', CongregationView.as_view(), name='home'),
url(r'^archive/', SermonList.as_view(), name='archive')
]
urlpatterns = [
url(r'^(?P<congregation>\w{3,20})/', include(page_patterns, namespace='page'))
]
页面按照我的预期显示,但如果我在标题导航栏中使用链接,反向查找将失败并显示此消息
NoReverseMatch at /spokane/archive/
Reverse for 'archive' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['(?P<congregation>\\w{3,20})/archive/']
错误是由模板
中的无效反向匹配引起的<li class="{% if request.resolver_match.url_name == 'archives' %}active{% endif %}">
<a href="{% url 'congregation:page:archive' %}">Archives</a></li>
我确信这很简单,但我很难找到解决方案。 谢谢!
答案 0 :(得分:2)
您的网址模式url(r'^(?P<congregation>\w{3,20})/', include(page_patterns, namespace='page'))
需要congregation
个关键字。当您使用{% url 'congregation:page:archive' %}
调用您的网址解析程序时,您没有提供会众关键字。
泰 - {% url 'congregation:page:archive' congregation=whatever %}