在 Django(3.1) (NoReverseMatch) 中将 link 添加到另一个页面
Adding a link to another page in Django(3.1) (NoReverseMatch)
我试图将 link 添加到我的索引页上的另一个页面,但是当我使用 {% url 'blog:BlogAbout' %}
时,我得到:
Exception Type: NoReverseMatch
Exception Value:'blog' is not a registered namespace
index.html:
<a href="{% url 'blog:BlogAbout' %}">About Me</a>
blog.urls.py:
path('about/', views.about, name="BlogAbout"),
blog.views.py:
def about(request):
return render(request, 'blog/about.html')
urls.py:
path('', include('blog.urls')),
这个问题几乎是熟悉的:
我正在这样做,但我仍然遇到错误。
添加 link 的正确方法是什么?
如果您在urls.py
中指定app_name = 'blog'
,则blog:
前缀是。如果你没有这样做,那么就没有“命名空间”,因此 url 就是:
<a href="{% url <b>'BlogAbout'</b> %}">About Me</a>
如果您想使用命名空间,请在 urls.py
中指定:
<b>app_name = 'blog'</b>
urlpatterns = [
path('about/', views.about, name='BlogAbout'),
# …,
]
或者,您可以在 include(…)
function [Django-doc]:
中使用 namespace=…
参数指定
path('', include('blog.urls'<b>, namespace='blog'</b>)),
然后您指定:
<a href="{% url <b>'blog:BlogAbout'</b> %}">About Me</a>
我试图将 link 添加到我的索引页上的另一个页面,但是当我使用 {% url 'blog:BlogAbout' %}
时,我得到:
Exception Type: NoReverseMatch
Exception Value:'blog' is not a registered namespace
index.html:
<a href="{% url 'blog:BlogAbout' %}">About Me</a>
blog.urls.py:
path('about/', views.about, name="BlogAbout"),
blog.views.py:
def about(request):
return render(request, 'blog/about.html')
urls.py:
path('', include('blog.urls')),
这个问题几乎是熟悉的:
我正在这样做,但我仍然遇到错误。 添加 link 的正确方法是什么?
如果您在urls.py
中指定app_name = 'blog'
,则blog:
前缀是。如果你没有这样做,那么就没有“命名空间”,因此 url 就是:
<a href="{% url <b>'BlogAbout'</b> %}">About Me</a>
如果您想使用命名空间,请在 urls.py
中指定:
<b>app_name = 'blog'</b>
urlpatterns = [
path('about/', views.about, name='BlogAbout'),
# …,
]
或者,您可以在 include(…)
function [Django-doc]:
namespace=…
参数指定
path('', include('blog.urls'<b>, namespace='blog'</b>)),
然后您指定:
<a href="{% url <b>'blog:BlogAbout'</b> %}">About Me</a>