首页 > 解决方案 > 未找到“博客/文章”的反向。“博客/文章”不是有效的视图函数或模式名称

问题描述

我目前正在我的 django 网站上做一个导航栏。但是,我在使用网址时遇到了一些问题:

我在一个名为 blogs 的新应用程序中创建了另一个 urls.py。这是代码:

在主 urls.py 中:

from django.contrib import admin
from django.urls import path, include
from translator.views import HomeView, TranslatorView

urlpatterns = [
    path('blog/', include('blog.urls')),
    path('', HomeView.as_view(), name='home'),
    path('translator/<str:phrase>/', TranslatorView.as_view(), name='translator'),
    path('translated/', TranslatorView.as_view(template_name='main/translated.html'), name='translated'),
    path('admin/', admin.site.urls),
]

在博客 urls.py 中:

from django.urls import path
from .views import ArticleDetailView

app_name = 'blog'
urlpatterns = [
 path('', ArticleDetailView.as_view(), name='article' )
]

我想要做的是在导航栏中包含路径 ArticleDetailView (name='article)。所以我编码了这个:

  <nav class="navbar fixed-top navbar-expand-lg navbar-light" style='background-color: snow;'>
    <div class = 'container'>
      <a class="navbar-brand" href="#">
        <img src="{% static 'C:\Users\marcv\OneDrive\Escriptori\Translate\Scripts\src\static\images\dna_PNG48.png'%}" width="70" height="30" class="d-inline-block align-top" alt="">

      </a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarTogglerDemo01">
        <ul class="navbar-nav mx-auto">
          <li class="nav-item active">
            <a class="nav-link" href="{% url 'home' %}">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href='{% url "translator" "phrase" %}'>Translator</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{% url 'blog/article' %}" >Blog</a> #Here's the problem
          </li>
        </ul>

      </div>
    </div>
  </nav>

但是,当我单击名为“博客”的导航栏按钮(位于模板中)时,会引发此错误:

未找到“博客/文章”的反向。'blog/article' 不是有效的视图函数或模式名称。

我知道错误是我在导航栏中给出的 url 名称。但是,我不知道应该输入哪个名称。

标签: pythonhtmldjango

解决方案


app_name='blog'名称空间 ( ) 和视图名称之间的分隔符article是冒号 ( :),而不是斜线,因此:

<a class="nav-link" href="{% url 'blog:article' %}" >Blog</a>

推荐阅读