首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决django错误:引发TemplateDoesNotExist(','.join(template_name_list),chain=chain)

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

Stack Overflow用户
提问于 2020-05-14 02:11:18
回答 1查看 2.6K关注 0票数 1

我在用Django 3+..。

我试图在我的页面上呈现一个博客模板,但是我收到了一个错误:

代码语言:javascript
复制
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时,会发生此错误。

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

我的目录文件看起来像图像:

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

代码语言:javascript
复制
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)

视图

代码语言:javascript
复制
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')

我在应用程序文章中的文件:urls

代码语言:javascript
复制
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'),
]

视图

代码语言:javascript
复制
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

我在模板、配置中的文件设置如下所示:

模板

代码语言:javascript
复制
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

代码语言:javascript
复制
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基文件中,但我不知道如何解决它。我在谷歌上搜索了一些,但没有成功.

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 02:23:39

考虑到模板加载程序在所有应用程序中都经过模板,所以在您的示例中,您不需要在模板名称前面添加app。

代码语言:javascript
复制
template_name = 'blog.html'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61788115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档