【问题标题】:How do I add link to another page [Django 3.0]? Reverse not found如何添加到另一个页面的链接 [Django 3.0]?未找到反向
【发布时间】:2020-04-04 01:37:21
【问题描述】:

我正在尝试在主页上添加指向blogDetails.html 的链接,但使用{% url '...' %} 模板标签会引发找不到反向异常。

index.html

<a href="{% url 'blogDetails' %}">O blogu</a>

urls.py

path('blogDetails/', views.BlogDetailsPageView.as_view(), name='blogDetails'),

views.py

class BlogDetailsPageView(TemplateView): 
    template_name = 'blog/blogDetails.html'

主 urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls', namespace='blog')),
]

这是我得到的错误:

Reverse for 'blogDetails' not found. 'blogDetails' is not a valid view function or pattern name.

这里到底发生了什么?感谢所有帮助。

【问题讨论】:

  • 您的应用的 urls.py 是否在您的主 urls.py 中?
  • @marlonjd 添加了主 urls.py
  • url 'blog:blogDetails'
  • 不要忘记在应用的urls.py中设置app_name = 'blog',否则命名空间会失败。

标签: python django anchor


【解决方案1】:

在您的urlpatterns 中使用namespace='blog'。看着the django documentation for the {% url %} template tag,它说:

如果您想检索命名空间 URL,请指定完全限定名称:

{% url 'myapp:view-name' %}

如果您将 blog 命名空间添加到您的模板标签调用中,它应该可以工作:

<a href="{% url 'blog:blogDetails' %}">O blogu</a>

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 2021-03-17
    • 2014-05-17
    • 2015-06-19
    • 2012-04-10
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多