我收到了一个错误,
TemplateDoesNotExist at /app/detail/3/ app/post_detail.html.
我写了以下内容:
def top(request):
content = POST.objects.order_by('-created_at')[:5]
page = _get_page(blog_content, request.GET.get('page'))
return render(request, 'top.html',{'content':content,"page":page})
class DetailView(generic.DetailView):
model = POST
def detail(request, pk):
content = POST.objects.get(id=pk)
return render(request, 'detail.html',{'content': content})
在top.html
<div>
{% for content in page %}
<h2>{{ content.title }}</h2>
<p><a href="{% url 'detail' content.pk %}">SHOW DETAIL</a></p>
{% endfor %}
</div>
在detail.html
<h2>{{ content.title }}</h2>
<p>{{ content.text }}</p>
当我访问top.html
时,会显示普通的网站,所以没关系。但是当我把SHOW DETAIL链接时,错误发生了。
我没有在我的代码中的任何地方写post_detail.html
,所以我真的不明白为什么post_detail.html
导致错误。
作为测试,我在post_detail.html
和top.html
的同一目录中创建了detail.html
,但同样的错误发生了。我想在制作SHOW DETAIL链接时创建一个系统,显示内容的详细信息。
我该怎么解决这个问题?我的代码有什么问题?读完答案之后,我重写了Views.py的DetailView
class DetailView(generic.DetailView):
model = POST
template_name = 'detail.html'
但是当我把SHOW DETAIL链接时,那里没有显示任何内容。我在detail.html中写道
<h2>{{ post.title }}</h2>
<p>{{ post.text }}</p>
我错误地写了detail.html或views.py的方式?我如何显示详细信息的内容?
您正在使用POST详细信息的通用详细信息视图。通用视图不期望或使用detail()
方法,并查找template_name
类属性中指定的模板或默认值modelname_detail.html
。
您应该通过将detail
方法移出该类,使您的视图成为标准函数视图 - 如“顶部”视图;或者,完全删除该方法(因为它只是执行通用视图已经执行的操作)并将模板重命名为post_detail.html
或设置template_name = 'detail.html'
。