如何解决 django 错误:raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)

Posted

技术标签:

【中文标题】如何解决 django 错误:raise TemplateDoesNotExist(\', \'.join(template_name_list), chain=chain)【英文标题】:How to solve django error: raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)如何解决 django 错误:raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain) 【发布时间】:2020-08-30 10:36:34 【问题描述】:

我正在使用 Django 3+...

我正在尝试在我的页面上呈现博客模板,但收到错误消息:

Internal Server Error: /postsblog
Traceback (most recent call last):
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\core\handlers\base.py", line 145, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\core\handlers\base.py", line 143, in _get_response
    response = response.render()
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\template\response.py", line 105, in render
    self.content = self.rendered_content
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\template\response.py", line 81, in rendered_content
    template = self.resolve_template(self.template_name)
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\template\response.py", line 63, in resolve_template
    return select_template(template, using=self.using)
  File "D:\Projetos Dev\gpprofessional\.venv\lib\site-packages\django\template\loader.py", line 47, in select_template
    raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
django.template.exceptions.TemplateDoesNotExist: posts/blog.html, posts/post_list.html
[13/May/2020 22:57:09] "GET /postsblog HTTP/1.1" 500 93437

当我尝试访问博客 URL 时出现此错误。

我的项目中有一些应用程序,例如应用程序库、应用程序帖子、应用程序博客和应用程序类别

我的目录文件如下图:

我在应用程序库中的文件: 网址

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('posts', include('posts.urls')),
    path('summernote/', include('django_summernote.urls'))
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

观看次数

from django.shortcuts import render
from django.views.generic.list import ListView
from django.views.generic.edit import UpdateView


def home(request):
    return render(request, 'home.html')

我在应用帖子中的文件: 网址

from django.urls import path
from . import views


urlpatterns = [
    path('blog', views.PostIndex.as_view(), name='post_blog'),
    path('categoria/<str:categoria>', views.PostCategoria.as_view(), name='post_categoria'),
    path('busca/', views.PostBusca.as_view(), name='post_busca'),
    path('post/<int:pk>', views.PostDetalhes.as_view(), name='post_detalhes'),
]

观看次数

from django.shortcuts import render
from django.views.generic.list import ListView
from django.views.generic.edit import UpdateView
from .models import Post


class PostIndex(ListView):
    model = Post
    template_name = 'posts/blog.html'


class PostBusca(PostIndex):
    pass


class PostCategoria(PostIndex):
    pass


class PostDetalhes(UpdateView):
    pass

我在 TEMPLATESINSTALLED_APPS 配置中的文件设置如下:

模板

TEMPLATES = [
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': 
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        ,
    ,
]

ISTALLED_APPS

INSTALLED_APPS = [
    'posts',
    'categorias',
    'comentarios',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'collectfast',
    'django.contrib.staticfiles',
    'base',
    'blog',
]

我尝试使用所有模板的唯一文件夹,但出现错误。我认为错误在 URL 基本文件中,但我不知道如何解决它。我在谷歌上进行了一些搜索,但没有成功......

【问题讨论】:

向我们展示您的设置 TEMPLATES 变量和 INSTALLED_APPS 我编辑了我的帖子,添加了模板和安装的应用程序 你只发布了模板 :) 现在调整了,抱歉! 【参考方案1】:

考虑到模板加载器会遍历所有应用程序中的模板,因此您无需在模板名称前面添加应用程序,因此在您的情况下

template_name = 'blog.html'

【讨论】:

如果我改变了,新的错误就会发生... ``` raise new from exc django.template.exceptions.TemplateDoesNotExist: base/base.html ``` 您是否更改了有关此项目模板结构的某些内容,因为您会注意到错误与其他模板相同,如果您删除 base/它会起作用(或让您遇到另一个错误)。您可以添加额外的***目录并将其称为您的应用程序名称,以避免重命名所有模板 对不起,不过,我没看懂……只新建一个目录,把app base放到里面解决问题? 不,创建类似于 base/templates/base/ 的文件夹结构,并将直接在 base/templates 中的所有内容放入其中(您也可以对其他应用执行类似操作) 谢谢我的朋友!发生错误是因为包含有错误。调整后,模板渲染好了!错误发生在包含标签的 blog.html 文件中。

以上是关于如何解决 django 错误:raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)的主要内容,如果未能解决你的问题,请参考以下文章

django.db.migrations.exceptions.MigrationSchemaMissing和raise ImproperlyConfigured('mysqlclient 1

django中form组件的校验时raise ValidationError与self.add_error异同

报错 raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)

Django 在执行 python manage.py runserver-“raise ImproperlyConfigured("Error loading psycopg2 modul

Django3.x - Heroku - raise ImproperlyConfigured("The SECRET_KEY setting must not be empty."

django升级2.1python升级3.7时出现的错误:"trying to load '%s': %s" % (entry[1], e) django.temp