"模板不存在":模板加载程序似乎正在搜索不存在的路由



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

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

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

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

基本目录网址模式

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)

加速器/网址.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'),
]

加速器/视图.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)

基本.html模板(相关链接)

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

发生这种情况是因为您的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应用。

最新更新