Django 模板不存在@

Posted

技术标签:

【中文标题】Django 模板不存在@【英文标题】:Django template does not exist @ 【发布时间】:2021-01-07 02:52:54 【问题描述】:

我正在使用 python 3.7.2 和 Django 2.1,每次尝试加载主页 url 时都会出现以下错误。

TemplateDoesNotExist at /

ghostwriters/post_list.html

请求方法:GET 请求地址:http://localhost:8080/ Django 版本:2.1 异常类型:TemplateDoesNotExist 异常值:

ghostwriters/post_list.html

异常位置: C:\Users\User.virtualenvs\ghostwriter-HT06mH6q\lib\site-packages\django\template\loader.py 在 select_template 中,第 47 行 Python 可执行文件: C:\Users\User.virtualenvs\ghostwriter-HT06mH6q\Scripts\python.exe

没有任何意义,因为确实没有 post_list.html 并且它不在我的应用级别 urls.py 或我的 views.py 中,所以为什么会发生这种情况?

urls.py:

从 django.urls 导入路径 from .views 导入 PostListView

urlpatterns = [ path('', PostListView.as_view(), name='home'), ]

views.py:

从 django.shortcuts 导入渲染从 django.views.generic 导入 列表视图

从 .models 导入帖子

类 PostListView(ListView): 模型 = 帖子 模板 = 'home.html'

settings.py:

模板 = [ 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], “APP_DIRS”:是的,

【问题讨论】:

【参考方案1】:

如果您使用任何 CBV(基于类的视图),默认情况下 django 将查找具有某些特定模式的模板。在您的情况下,由于您使用的是列表视图,因此它将查找 YOURMODELNAME_list.html(小写的 YOURMODELNAME),如果您正在扩展详细视图,它将查找 YOURMODELNAME_detail.html 。如果您想在 CBV 中覆盖此行为试试这个,

class YourCBV(ListView):
   template_name = 'your_new_template.html'

供您参考, Django official documentation

【讨论】:

以上是关于Django 模板不存在@的主要内容,如果未能解决你的问题,请参考以下文章

Django 模板不存在@

Django 模板不存在

模板不存在。加载静态文件和模板 Django 项目结构

模板不存在“django 2.0”

模板不存在。 Django寻找错误的路径

Django CMS - 创建第一页时模板不存在错误