'TemplateDoesNotExist':模板加载器似乎正在搜索不存在的路由

时间:2019-07-25 16:39:23

标签: python django

当我单击特定的链接时,我收到TemplateDoesNotExist错误,并且我从'template-loader postmortem'中注意到Django正在搜索不正确和不存在的路径。

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

Django已将模板移至加速器应用程序(并更新了我的设置和网址),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)

accelerators / 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>

1 个答案:

答案 0 :(得分:1)

之所以这样,是因为您的Accelerator模型仍然来自评论应用,即来自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应用。