当我单击特定的链接时,我收到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>
答案 0 :(得分:1)
之所以这样,是因为您的Accelerator
模型仍然来自评论应用,即来自review.models
。
Django未在 templates/app_name/model_name_type.html
中搜索模板()。
2个解决方案:关注其中的任何一个
template_name
。class AcceleratorCreateView(LoginRequiredMixin, CreateView):
model = Accelerator
template_name = 'accelerators/accelerator_form.html'
Accelerator
模型移至models file of accelerators
应用。