你可以在Django中有多个app处理404吗?

时间:2009-04-28 01:26:09

标签: django http-status-code-404 django-flatpages

显然,Django flatpages的工作方式是它处理其他应用程序抛出的404。我想知道我是否可以做另一个平板式应用程序,在404之前得到一个破解在flatpages之前。到目前为止,我试过这个没有成功。模板会被渲染,但数据不会通过。

甚至可能吗?

2 个答案:

答案 0 :(得分:3)

根据Django文档,您可以将自己的视图指定为404或500处理程序:

handler404 = 'mysite.views.my_custom_404_view'

因此,您的应用可以在views.py中定义自定义错误处理视图,您可以将其设置为urls.py

中404或500视图的处理程序

有关详细信息,请参阅“Customizing Error views”。

答案 1 :(得分:1)

内置flatpages应用程序的工作方式是使用some middleware:中间件有一个名为“process_response”的函数,用于检查404状态代码的传出响应。如果响应是404,并且URL与平面页匹配,则中间件会抑制404并返回呈现的平面页。

您可以使用自己的中间件执行相同的操作。为了确保在flatpages代码之前调用您的代码,您的中间件应该在<{1}}设置中 flatpages后

MIDDLEWARE_CLASSES

它之后,而不是之前的原因是因为在响应阶段Django以相反的顺序应用中间件。