TemplateDoesNotExist at / app / detail / 3 /

时间:2018-01-02 11:26:36

标签: python django

我收到了错误,

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.htmltop.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的方法我怎么能显示细节的内容?

1 个答案:

答案 0 :(得分:1)

您正在使用POST详细信息的通用详细信息视图。通用视图不期望或使用detail()方法,并查找template_name类属性中指定的模板或默认值modelname_detail.html

您应该将视图设为标准功能视图 - 例如&#34; top&#34;一 - 将detail方法移出该类;或者,完全删除该方法(因为它只是执行通用视图已经执行的操作)并将模板重命名为post_detail.html或设置template_name = 'detail.html'