django 基于类的视图自定义 404 和 500
Posted
技术标签:
【中文标题】django 基于类的视图自定义 404 和 500【英文标题】:django class based view custom 404 and 500 【发布时间】:2013-10-09 05:52:00 【问题描述】:我正在尝试学习 django,并且我有一个小型测试服务器(不是开发),我正在尝试托管一个小型博客站点(类似于官方教程)。
我想要自定义 404 和 500 视图,所以,我在 urls.py
中有以下内容:
from mystuff.views import Template404View, Template500View
handler404 = Template404View.as_view()
handler500 = Template500View.as_view()
在我的views.py
中,我有以下内容:
class Template404View(TemplateView):
template_name = "404.html"
class Template500View(TemplateView):
template_name = "500.html"
404.html
和 500.html
存在于我的 site_templates
目录中。
但是,当我在我的测试服务器上托管它时,我看到的不是 400 或 500 个自定义页面,而是Internal Server Error
。
我试图在 SO 上查找类似的问题,我看到了 following,但这似乎没有帮助...
任何建议将不胜感激...谢谢。
【问题讨论】:
【参考方案1】:您正在从 mystuff 导入自定义视图,而它们是在 views.py 中定义的。尝试从我的 stuff.views 导入它们。
同时设置 DEBUG=True 可以给你一些线索
【讨论】:
对不起,我打错了.views
- 我现在已经更正了。还没有尝试过 DEBUG=True - 但我想这只会抛出默认的 django 404 - 这不是我想要的。
如果您收到内部服务器错误 (500) 设置 ´DEGUG=True`) 将告诉您有关错误原因的更多信息。可能错误出现在之前的某些导入或类似情况中,因此您无法提供正确的 500.html。【参考方案2】:
我今天遇到了类似的问题:问题是我的 500 页中有德语变音符号,并且在渲染 500 页时,我的 apache 出现了内部服务器错误,因此引发了 apache 200 错误。所以检查你的500页,单独测试一下,看你调用的时候是否正确显示。
但是既然您正在学习教程:为什么不采用Chapter 3 中描述的方法呢?只需编写您的 500.html 文件并将其放入 my_app/templates 中。这很好用,不需要额外的视图或网址。
【讨论】:
以上是关于django 基于类的视图自定义 404 和 500的主要内容,如果未能解决你的问题,请参考以下文章
从 Django 中基于类的通用视图自定义表单变量的首选方法是啥?
带有来自模型的自定义验证消息的 Django 1.5 基于类的视图
Django,当我返回 status_code 404 或 500 时自定义 404/500