如何在/修复NoReverseMatch

时间:2019-02-06 10:33:28

标签: python django

当我尝试将我的文章链接到文章详细信息页面时,我在/出现错误NoReverseMatch。

NoReverseMatch位于/ 找不到带有参数'('',)'的'article-detail'。尝试了1个模式:['article \ /(?P [0-9] +)\ / $']

    {% for articles in object_list %}
    <div class="article">
        <div class="article-title">
            <a href="{% url 'article-detail' pk=article.pk %}"></a>
                <p class="p-title">{{ articles.title }}</p>
            </a>
        </div>
        <div class="article-content">
            <p>{{ articles.content }}</p>
        </div>
    </div>
    <hr>
    {% endfor %}
    path('', views.HomeView.as_view(), name='index'),

    path('article/create/', views.ArticleCreateView.as_view(), name='article-create'),
    path('article/<int:pk>/update/', views.ArticleUpdateView.as_view(), name='article-update'),
    path('article/<int:pk>/', views.ArticleDetailView.as_view(), name='article-detail'),
]```


3 个答案:

答案 0 :(得分:2)

有错字

更改此

<a href="{% url 'article-detail' pk=article.pk %}"></a>

<a href="{% url 'article-detail' pk=articles.pk %}"></a>

答案 1 :(得分:0)

您需要执行以下操作:

<a href="{% url 'article-detail' articles.pk %}"></a>

不需要pk=,而且您有错字

答案 2 :(得分:0)

如果您阅读错误消息,您将发现调用reverse并将空字符串作为'pk'值,这意味着模板系统无法解析article.pk(=>没有名为“ article”的上下文变量,或者没有,但没有“ pk”属性,键或方法的变量)。然后,如果您重新阅读模板代码,则会看到您将forloop迭代变量命名为articles(复数),而不是article(单数),因此是错误。

结论是1 /您应该始终仔细阅读错误消息,2 /良好,明智和一致的命名可以避免很多错别字...