在 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>