【发布时间】:2021-11-26 07:19:02
【问题描述】:
我一直在练习 Djnago,为此,我正在建立一个博客。在构建它的过程中,我遇到了一个错误,同时使用以下代码:
<a href="{% url 'blog_post' post.slug %}">
{{ post.title }}
</a>
在学习和做其他课程时,这样的事情会很好。但是现在,它会引发这个异常:NoReverseMatch。
如果我使用此代码,它会正常工作:
<a href="{{ post.slug }}">
{{ post.title }}
</a>
虽然在不同的项目中工作,第一种方法可以正常工作,但这次不行。
我的问题是为什么?
这是我的 urls 和我的 views 中的代码。也许错误就在这里,而不是其他地方。
如果有人能解释为什么会发生这种情况,或者我哪里出错了,我们将不胜感激
网址:
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.blog_index, name='blog_index'),
path('<slug:post_slug>/', views.blog_post, name='blog_post'),
]
观看次数:
from django.shortcuts import render
from .models import Post
# Create your views here.
def blog_index(request):
posts = Post.objects.order_by('-
created').filter(published=True)
data = {
'posts': posts
}
return render(request, 'blog/post_list.html', data)
def blog_post(request, post_slug):
post = Post.objects.get(slug=post_slug)
data = {
'post': post
}
return render(request, 'blog/post_detail.html', data)
【问题讨论】:
-
请始终发布带有完整追溯的整个错误消息。
NoReverseMatch不足以调试问题。 -
@Selcuk 至少(希望如此?我没有测试)有一个minimal reproducible example。
-
@user202729 不,没有。我们不知道导致初学者出现问题的输入 (
post)。此外,MCVE 不是缺少调试信息(例如错误消息)的借口。 -
@Selcuk 谢谢!我已经用 Django 给出的错误消息的打印更新了这个问题。我相信现在更清楚了。
标签: python django django-urls