2015-11-05 271 views
2

我在django中设置了自定义的404和500错误处理程序,他们在开发中工作,但使用Apache他们只显示默认的apache内部服务器错误页面,即使是404错误。在Apache和mod_wsgi中的Django自定义错误处理程序

这里是我的urls.py:

handler400 = 'views.error400' 
handler403 = 'views.error403' 
handler404 = 'views.error404' 
handler500 = 'views.error500' 

我读过的许多方法来建立在Apache的自定义错误页,但我和Django没有工作尝试方法的。设置Apache/mod_wsgi和Django的正确方法是什么?

我是否从我的urls.py中删除这些行,并将一些行添加到我的apache.conf中?

应该将哪些行添加到apache.conf中,因为我不确定如何从apache配置文件访问视图,并且正常的用于Django的urls.py路由不适用于自定义错误页面,因为我怀疑Apache正在拦截请求并提供它自己的页面。

我只想使用我的模板作为我的自定义错误页面(其中包括从基本模板继承)。

我该如何做到这一点,我无法在任何地方找到像样的答案?

感谢

编辑:

我试图编辑工作Apache的配置加ErrorDocument 500 /templates/500.html等,但没有奏效。

我目前在我的模板目录中有错误页面,它们各自从基本模板继承。而且,他们每个人都有自己的看法来处理回应。

但无论我做什么,从urls.py中删除这些行,添加东西到Apache配置等。我不能得到任何东西,只有典型的内部服务器错误apache页面显示任何错误,即使是一个人的不是500错误。

我能做些什么来得到这个工作?在django开发服务器上工作得很好,但是一旦apache被引入混音中,我无法使用apache或django工作,我必须缺少一些东西,但是什么?

回答

1

您可以从urls.py删除那些行。 Django会查找你的模板来获取它们。

只需将404.html500.html文件放入your_app/templates/目录。

+0

我在我的模板目录中有这些文件。如果我从我的urls.py中删除这些行,我将添加到我的Apache配置中以使其工作? – shenk

+0

所以添加一些像'ErrorDocument 404/templates/404.html'?而对于500.html甚至403.html – shenk

+0

来说,Django路由器将会照顾到这一点,您不必更改Apache配置。 – maciek