Python Django忽略404.html
我为Django应用程序编写了一个自定义的404.html,并将其放在模板目录中与index.html相同的位置,但Django仍然显示默认的404页面。Debug设置为false,allowed hosts设置为127.0.0.1以进行测试,稍后将对其进行更改。这怎么可能呢?我想创建一个404.html就足够了?我是否需要在某些设置中激活错误页面 以下是我的应用程序结构:Python Django忽略404.html,python,html,django,Python,Html,Django,我为Django应用程序编写了一个自定义的404.html,并将其放在模板目录中与index.html相同的位置,但Django仍然显示默认的404页面。Debug设置为false,allowed hosts设置为127.0.0.1以进行测试,稍后将对其进行更改。这怎么可能呢?我想创建一个404.html就足够了?我是否需要在某些设置中激活错误页面 以下是我的应用程序结构: myapp |-- manage.py |-- myapp | |-- models.py | |-- setti
myapp
|-- manage.py
|-- myapp
| |-- models.py
| |-- settings.py
| |-- templates
| | |-- index.html
| | |-- 404.html
您需要覆盖404错误的默认视图处理程序。 Django文档为您的问题提供了答案: 404.html应直接放置在目录模板中 例如,类似这样的事情:
yourproject
|-- manage.py
|-- yourproject
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
|-- yourapp
| |-- __init__.py
| |-- models.py
| `-- views.py
|-- static
|-- templates
| |-- 404.html
| |-- yourapp
` `-- anotherapp
您不应该将其与index.html等应用程序的模板放在一起。我最终通过配置模板目录解决了这个问题:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
)
你把404.html放在哪里了?请显示目录结构。您的结构不是最优的。settings.py和models.py不应在一起。目录模板应该位于项目的顶层。你真的尝试过我在回答中提出的结构吗?当你调用一个不存在的URL时,你会得到什么?如果您使用python manage.py runserver运行应用程序,您会在控制台输出中看到什么?是否有http状态代码404?出于测试目的,设置允许的\u HOSTS=['*']。在生产中你会改变它。然后重试。将带有404.html的模板目录放在顶层并更改允许的主机不会改变任何内容。是的,HTTP 404被提升,但它显示了默认的404模板。控制台输出为[22/Oct/2014 15:08:19]GET/blabla/HTTP/1.1 404 2687I也尝试过这种结构,但没有效果。有些东西还没找到。我需要覆盖一些设置吗?我这样问是因为暗示这一点的答案被否决了。