/index 处的 NoReverseMatch
NoReverseMatch at /index
我想了解为什么我在尝试使用 Django Contact Form 时看到 NoReverseMatch 错误。
当我使用以下语法向 index.html 添加 link 时发生错误:
<h3><a href="{% url 'contact' %}">Contact</a></h3>
如果我使用以下硬编码语法,则不会发生任何错误,并且 index.html 到联系表的 link 会按预期工作。
<h3><a href="contact">Contact</a></h3>
我想要实现的与 Django 教程中关于 removing hard coded urls 的内容相似。
我看到的完整错误是:
NoReverseMatch at /index
Reverse for 'contact' with arguments '()' and keyword arguments '{}'
not found. 0 pattern(s) tried: []
如有需要,我的缩写urls.py是:
urlpatterns = patterns('',
...
url(r'index$', views.index, name='index'),
...
url(r'^contact/', include('contact_form.urls')'),
)
我知道我遗漏了一些明显的东西!
这是因为没有 url 名称为 contact
。
url(r'^contact/', include('contact_form.urls')'),
是 url,它将把所有以 contact
开头的 url 映射到 contact_form.urls
。官方文档没有说如何访问 contact
视图,但是如果对 django 有基本的了解,我们可以这样做:
urlpatterns = patterns('',
...
url(r'index$', views.index, name='index'),
...
url(r'^contact/', include('contact_form.urls', namespace='contacts')),
)
和模板中的:
<h3><a href="{% url 'contacts:contact_form' %}">Contact</a></h3>
contact_form
url 名称在 source code of the module 中找到。
当你在模板中使用{% url 'contact' %}时,'contact'实际上是路由名称。在您的 url 模式中,没有使用此名称的路线。您应该在 contact_forms.urls.py:
中包含这样的内容
url(r'$', views.index, name='contact_index')
此外,您应该将 "contact/" 模式更改为:
url(r'^contact/', include('contact_form.urls', namespace='contacts'))
然后在模板中创建 link 时使用它:
{% url 'contacts:contact_index' %}
我想了解为什么我在尝试使用 Django Contact Form 时看到 NoReverseMatch 错误。
当我使用以下语法向 index.html 添加 link 时发生错误:
<h3><a href="{% url 'contact' %}">Contact</a></h3>
如果我使用以下硬编码语法,则不会发生任何错误,并且 index.html 到联系表的 link 会按预期工作。
<h3><a href="contact">Contact</a></h3>
我想要实现的与 Django 教程中关于 removing hard coded urls 的内容相似。
我看到的完整错误是:
NoReverseMatch at /index
Reverse for 'contact' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
如有需要,我的缩写urls.py是:
urlpatterns = patterns('',
...
url(r'index$', views.index, name='index'),
...
url(r'^contact/', include('contact_form.urls')'),
)
我知道我遗漏了一些明显的东西!
这是因为没有 url 名称为 contact
。
url(r'^contact/', include('contact_form.urls')'),
是 url,它将把所有以 contact
开头的 url 映射到 contact_form.urls
。官方文档没有说如何访问 contact
视图,但是如果对 django 有基本的了解,我们可以这样做:
urlpatterns = patterns('',
...
url(r'index$', views.index, name='index'),
...
url(r'^contact/', include('contact_form.urls', namespace='contacts')),
)
和模板中的:
<h3><a href="{% url 'contacts:contact_form' %}">Contact</a></h3>
contact_form
url 名称在 source code of the module 中找到。
当你在模板中使用{% url 'contact' %}时,'contact'实际上是路由名称。在您的 url 模式中,没有使用此名称的路线。您应该在 contact_forms.urls.py:
中包含这样的内容url(r'$', views.index, name='contact_index')
此外,您应该将 "contact/" 模式更改为:
url(r'^contact/', include('contact_form.urls', namespace='contacts'))
然后在模板中创建 link 时使用它:
{% url 'contacts:contact_index' %}