Django寻找不存在的模板

时间:2020-06-21 21:10:17

标签: python django

我对网站进行了一些重大更改,现在,当我单击一个特定的链接时,它会尝试转到一个不存在的页面(理应如此),但是我找不到对该不存在页面的任何引用在我的代码中,所以我无法正确定向它。

views.py

from django.shortcuts import render
from .models import BakingPost
from django.views import generic


def index(request):
    num_posts = BakingPost.objects.all().count()
    context = {
        'num_posts': num_posts,
    }
    return render(request, 'food_blog/index.html', context=context)


class BakingListView(generic.ListView):
    model = BakingPost
    # paginate_by = 10


class BakingDetailView(generic.DetailView):
    model = BakingPost

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('bakes/', views.BakingListView.as_view(), name='bakes'),
    path('bake/<int:pk>/', views.BakingDetailView.as_view(), name='bake_detail'),
    # path('post/new/', views.post_new, name='post_new'),
    # path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
]

navbar.html

<nav>
  <div id="div_navbar">
    <ul class="ul_navbar">
      <li class="li_navbar">
        <a class="a_navbar" href="{% url 'index' %}">Home</a>
      </li>
      <li class="li_navbar">
        <a class="a_navbar" href="{% url 'bakes' %}">Baking List</a>
      </li>
    </ul>
  </div>
</nav>

bake_list.html

{% extends 'food_blog/base.html' %}
{% block content %}
    <h1>Baking List</h1>
    {% if bake_list %}
    <ul>
        {% for bake in bake_list %}
            <li>
                <a href="{{ bake.get_absolute_url }}">{{ bake.title }}</a> ({{bake.author}})
            </li>
        {% endfor %}
    </ul>
    {% else %}
        <p>Nothing in the oven</p>
    {% endif %}
{% endblock %}

当我单击主页导航栏上的“烘焙列表”时,错误提示说“ / bakes /下的“ TemplateDoesNotExist” food_blog / bakingpost_list.html”。错误是正确的,该文件在任何地方都不存在,但是我不确定为什么要查找bakingpost_list.html。我创建了该文件,然后将其重命名为bake_list.html,我以为我抓到了在views.py和urls.py中所有对它的引用。在我的代码中仍然找不到指向“ bakingpost_list.html”的任何内容。努力弄清楚此错误是否还意味着其他内容。

我试图像其他建议的那样更改settings.py中的Template目录,但这没有用,我认为这不是同一问题。 Django能够找到Templates目录中的所有其他内容。

为了娱乐,我在与所有其他HTML文件相同的模板目录中创建了一个新文件“ bakingpost_list.html”,它可以正常加载该页面。因此,我假设我忘记了停止引用该文件的地方。

2 个答案:

答案 0 :(得分:2)

它是ListView的默认模板名称

为简洁起见,它是从MultipleObjectTemplateResponseMixin类继承而来的,它是由get_template_names()生成的

返回候选模板名称的列表。返回以下内容 列表:

视图上template_name的值(如果提供) / .html

答案 1 :(得分:1)

如果您不想使用默认模板,可以将所需模板添加到视图中,例如:

class BakingListView(generic.ListView):
    model = BakingPost
    template_name = ‘bakes/food_blog/bake_list.html’
    # paginate_by = 10