【问题标题】:'TemplateDoesNotExist': template loader appears to be searching non-existent routes'TemplateDoesNotExist':模板加载器似乎正在搜索不存在的路由
【发布时间】:2019-12-04 00:14:15
【问题描述】:

当我单击特定链接时收到 TemplateDoesNotExist 错误,并且我从“模板加载器事后分析”中注意到 Django 正在搜索不正确且不存在的路径。

我最近将一个名为“reviews”的 Django 应用程序的一半内容移到了另一个名为“accelerators”的应用程序中。我的每个应用程序的模板目录都遵循以下模式:“应用程序名称”/模板(文件夹)/“应用程序名称”/html 模板。

将模板移动到加速器应用程序(并更新了我的设置和网址)后,Django 应该通过“accelerators/templates/accelerators/accelerator_form.html”查找模板,但根据错误消息,它正在搜索: 'accelerators/templates/reviews/accelerator_form.html'。

我怀疑这与我刚刚从评论应用程序中移动了此模板以及许多其他文件这一事实有关,但我无法弄清楚为什么会发生这种情况。我在下面包含了我更新的网址等以供参考。

基本目录 urlpatterns

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
    path('', include('accounts.urls')),
    path('reviews/', include('reviews.urls')),
    path('accelerators/', include('accelerators.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

加速器/urls.py

from django.urls import path
from .views import (
    AcceleratorListView, 
    accelerator_detail,
    accelerator_reviews,
    AcceleratorCreateView, 
    AcceleratorUpdateView, 
    AcceleratorDeleteView,
)
from . import views

urlpatterns = [
    path('', AcceleratorListView.as_view(), name='accelerators'),
    path('<int:pk>/', views.accelerator_detail, name='accelerator_detail'),
    path('new/', AcceleratorCreateView.as_view(), name='accelerator_create'),
    path('<int:pk>/update/', AcceleratorUpdateView.as_view(), name='accelerator_update'),
    path('<int:pk>/delete/', AcceleratorDeleteView.as_view(), name='accelerator_delete'),
    path('<int:pk>/reviews/', views.accelerator_reviews, name='accelerator_reviews'),
]

accelerators/views.py(我试图访问的视图)

class AcceleratorCreateView(LoginRequiredMixin, CreateView):
    model = Accelerator
    fields = ['name', 'website', 'locations', 'bio', 'sector_focus', 'stage', 'deal', 'duration', 'logo']

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

base.html 模板(相关链接)

<li><a class="dropdown-link" href="{% url 'accelerator_create' %}">Add Company</a></li>

【问题讨论】:

    标签: python django


    【解决方案1】:

    发生这种情况是因为您的 Accelerator 模型仍来自 review 应用,即来自 review.models

    如果没有特别提供,Django 会在 templates/app_name/model_name_type.html 中搜索模板。

    2 个解决方案: 关注其中任何一个

    1. 具体提供template_name
    class AcceleratorCreateView(LoginRequiredMixin, CreateView):
        model = Accelerator
        template_name = 'accelerators/accelerator_form.html'
    
    1. 将您的 Accelerator 模型移至 models file of accelerators 应用。

    【讨论】:

    • @samalty,检查一下,让我知道这是否适合你?
    • 'template_name' 完成了这项工作。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2015-11-21
    • 2020-11-16
    • 1970-01-01
    • 2014-11-04
    • 2023-04-04
    • 2014-07-22
    相关资源
    最近更新 更多