首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引发以下错误: django.template.exceptions.TemplateDoesNotExist (template_name,chain=chain)

引发以下错误: django.template.exceptions.TemplateDoesNotExist (template_name,chain=chain)
EN

Stack Overflow用户
提问于 2022-07-24 09:24:38
回答 1查看 203关注 0票数 0

我正在尝试处理Django项目中的错误,并不断收到以下消息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/usr/local/Cellar/python@3.9/3.9.10/Frameworks/Python.framework/Versions/3.9/lib/python3.9/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/core/handlers/wsgi.py", line 132, in __call__
    response = self.get_response(request)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/core/handlers/base.py", line 140, in get_response
    response = self._middleware_chain(request)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/core/handlers/exception.py", line 57, in inner
    response = response_for_exception(request, exc)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/core/handlers/exception.py", line 139, in response_for_exception
    response = handle_uncaught_exception(
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/core/handlers/exception.py", line 184, in handle_uncaught_exception
    return callback(request)
  File "/Users/Tom/Desktop/squeasy /tasks/views.py", line 31, in handler500
    response = render(request, template_name)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/shortcuts.py", line 24, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/template/loader.py", line 61, in render_to_string
    template = get_template(template_name, using=using)
  File "/Users/Tom/.local/share/virtualenvs/squeasy_-djXBooHN/lib/python3.9/site-packages/django/template/loader.py", line 19, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: 500.html

为我的设置:

代码语言:javascript
复制
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR /'squeasy/tasks/templates/tasks'],
        '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',
            ],
        },
    },
]

我也尝试过:

代码语言:javascript
复制
'DIRS': [],
        'APP_DIRS': True,

代码语言:javascript
复制
'DIRS': [os.path.join(BASE_DIR, 'templates')],

代码语言:javascript
复制
'DIRS': [BASE_DIR/'templates'],

在正常运行模板时,我没有其他错误,只有当我强制执行错误时,才会出现其他错误。

我有以下views.py来处理400、403和404错误请求:

代码语言:javascript
复制
def handler400(request, exception, template_name = "400.html"):
    response = render(request, template_name)
    response.status_code = 400
    return response

def handler403(request, exception, template_name = "403.html"):
    response = render(request, template_name)
    response.status_code = 403
    return response

def handler404(request, exception, template_name="404.html"):
    response = render(request, template_name)
    response.status_code = 404
    return response

def handler500(request, template_name="500.html"):
    response = render(request, template_name)
    response.status_code = 500
    return response

在我的项目的urls.py文件中有:

代码语言:javascript
复制
    handler400 = 'tasks.views.handler400'
    handler403 = 'tasks.views.handler403'
    handler404 = 'tasks.views.handler404'
    handler500 = 'tasks.views.handler500'

视图所在的应用程序名为任务。

DEBUG = False在我的settings.py文件中。

EN

回答 1

Stack Overflow用户

发布于 2022-07-24 17:45:52

答复如下:

代码语言:javascript
复制
def handler400(request, exception, template_name = "tasks/400.html"):
    response = render(request, template_name)
    response.status_code = 400
    return response

def handler403(request, exception, template_name = "tasks/403.html"):
    response = render(request, template_name)
    response.status_code = 403
    return response

def handler404(request, exception, template_name="tasks/404.html"):
    response = render(request, template_name)
    response.status_code = 404
    return response

def handler500(request, template_name="tasks/500.html"):
    response = render(request, template_name)
    response.status_code = 500
    return response

问题是我只有400.html而不是tasks/400.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73097147

复制
相关文章

相似问题

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