当我尝试将我的文章链接到文章详细信息页面时,我在/出现错误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'),
]```
答案 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 /良好,明智和一致的命名可以避免很多错别字...