【问题标题】:Adding a link to another page in Django(3.1) (NoReverseMatch)在 Django(3.1) 中添加指向另一个页面的链接 (NoReverseMatch)
【发布时间】:2021-03-17 15:28:02
【问题描述】:

我正在尝试在我的索引页面上添加指向另一个页面的链接,但是当我使用 {% 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')),

这个问题几乎是熟悉的:How do I add link to another page [Django 3.0]? Reverse not found

我正在这样做,但仍然出现错误。 添加链接的正确方法是什么?

【问题讨论】:

  • 分享urls.py

标签: python html python-3.x django django-urls


【解决方案1】:

如果您在urls.py 中指定app_name = 'blog',则blog: 前缀。如果您不这样做,则没有“命名空间”,因此 url 很简单:

&lt;a href="{% url <b>'BlogAbout'</b> %}"&gt;About Me&lt;/a&gt;

如果要使用命名空间,请在 urls.py 中指定:

app_name = 'blog'

urlpatterns = [
    path('about/', views.about, name='BlogAbout'),
    # …,
]

或者,您可以使用include(…) function [Django-doc] 中的namespace=… 参数来指定:

    path('', include('blog.urls'<b>, namespace='blog'</b>)),

然后你指定这个:

&lt;a href="{% url <b>'blog:BlogAbout'</b> %}"&gt;About Me&lt;/a&gt;

【讨论】:

  • 谢谢!但是当我想使用命名空间时,我需要在 urls.py 中的什么地方指定呢?
  • @Luca:您在urls.py 中使用app_name = ... 指定。
猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 2012-06-30
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2016-07-24
  • 2020-11-06
  • 2016-12-23
相关资源
最近更新 更多