【发布时间】:2017-12-20 22:49:30
【问题描述】:
我正在尝试在浏览器上使用django 运行博客构建。我得到了这个错误:
NoReverseMatch at /
Reverse for 'blog.views.post_detail' not found.
'blog.views.post_detail' is not a valid view function or pattern name.
我的应用的 url.py 如下所示:
from django.conf.urls import include, url
from . import views
urlpatterns = [
url(r'^$', views.post_list),
url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail),
]
似乎当我输入 127.0.0.1:8000/。
该网址将指向views.post_list。
我的 views.py 看起来像:
from django.shortcuts import render, get_object_or_404
from .models import Post
def post_list(request):
posts = Post.objects.filter(published_date__isnull=False)
return render(request, 'blog/post_list.html', {'posts': posts}
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
post_list() 将使用 post_list.html 呈现请求。
在 post_list.html 中,错误来自以下行:
<h1><a href="{% url 'blog.views.post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
我不太明白错误消息中的“反向”是什么意思。 views.py 中确实存在“blog.views.post_detail”。我想我得到了代码所需的一切,但不知道出了什么问题。
我是 django 新手,如果问题是基本问题,我很抱歉,感谢您的回答!
【问题讨论】:
-
不妨看看this post
-
你在哪里定义post_detail的URL,你想链接到哪个?