【问题标题】:django class based view custom 404 and 500django 基于类的视图自定义 404 和 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.html500.html 存在于我的 site_templates 目录中。

但是,当我在我的测试服务器上托管它时,我看到的不是 400 或 500 个自定义页面,而是Internal Server Error

我试图在 SO 上查找类似的问题,我看到了 following,但这似乎没有帮助...

任何建议将不胜感激...谢谢。

【问题讨论】:

    标签: django django-templates django-views


    【解决方案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 中。这很好用,不需要额外的视图或网址。

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 2013-02-15
      • 2016-10-16
      • 1970-01-01
      • 2017-10-16
      • 2019-12-27
      • 2012-10-23
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多