我收到了错误,
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链接时建立一个系统,显示内容的详细信息。
我该如何解决这个问题?我的代码有什么问题? 读完答案之后,我重新写了viewsView of views.py
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的方法我怎么能显示细节的内容?
答案 0 :(得分:1)
您正在使用POST详细信息的通用详细信息视图。通用视图不期望或使用detail()
方法,并查找template_name
类属性中指定的模板或默认值modelname_detail.html
。
您应该将视图设为标准功能视图 - 例如&#34; top&#34;一 - 将detail
方法移出该类;或者,完全删除该方法(因为它只是执行通用视图已经执行的操作)并将模板重命名为post_detail.html
或设置template_name = 'detail.html'
。