django 教程:自定义 404 和 500 视图

Posted

技术标签:

【中文标题】django 教程:自定义 404 和 500 视图【英文标题】:django tutorial: custom 404 and 500 views 【发布时间】:2013-03-08 00:11:50 【问题描述】:

Windows 7 Python 2.7.3 Django 1.5 python manage.py runserver

我正在学习“https://docs.djangoproject.com/en/1.5/intro/tutorial03/”上的教程

在事情变得奇怪之前,我已经达到了“写一个 404(找不到页面)视图”。

我试图弄清楚如何制作自定义 404 视图。但是,我不确定:

A.自定义 404.html 文件的确切位置。它应该在我的项目目录树中还是在我的 Django 目录树中。我的项目目录树是这样的,

1> mysite  
2>     - mysite  
3>     - polls  
4>         - templates  
5>             - polls  
6>     - templates  
7>         - admin  

目前404.html是@6>

B.哪些地方需要修改?我知道需要在“根”url conf 中设置 handler404 和 handler500。我有一个 url.py 位于 @ 2> 和 3> (见上面的树)。假设 2> 是正确的地方,我假设语法如下,

handler404 = 'templates.404'
handler500 = 'templates.500'

还有什么需要设置的,在哪里?

【问题讨论】:

【参考方案1】:

我看你有一点小错误,但别担心。

看,试试这个:

handler404 = 'mysite.views.error404'

然后在mysite(第二个mysite)中创建一个views.py,如果你没有的话。在那views.py中放:

from django.shortcuts import render

def error404(request):
    return render(request,'404.html')

仅此而已!在模板中,创建该文件并做一些好事!

请记住,仅适用于生产(DEBUG=False),否则 django 使用回溯。 505也是一样的,你可以试试handler404 = 'polls.views.see404',然后把views.py放进去,不过你知道,口味不一样嘿嘿。

现在,尝试其他方法,例如:在 urls.py 中添加注释

#handler404 = 'mysite.views.error404'

并在views.py中删除def。

在您的模板文件的索引中创建一个简单的 404.html。 在生产环境中运行服务器并产生 404 错误,发生了什么?

【讨论】:

以上是关于django 教程:自定义 404 和 500 视图的主要内容,如果未能解决你的问题,请参考以下文章

Django,当我返回 status_code 404 或 500 时自定义 404/500

Django自定义404500等页面模板

Django - 自定义 403 模板

自定义页面 404 未显示,但页面 500 正在显示

Django 自定义 500 错误模板不显示 request.user

Django 404页面未加载