TemplateDoesNotExist at / app / detail / 3 /

问题描述 投票:1回答:1

我收到了一个错误,

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链接时创建一个系统,显示内容的详细信息。

我该怎么解决这个问题?我的代码有什么问题?读完答案之后,我重写了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的方式?我如何显示详细信息的内容?

python django
1个回答
1
投票

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

您应该通过将detail方法移出该类,使您的视图成为标准函数视图 - 如“顶部”视图;或者,完全删除该方法(因为它只是执行通用视图已经执行的操作)并将模板重命名为post_detail.html或设置template_name = 'detail.html'

© www.soinside.com 2019 - 2024. All rights reserved.