显然,Django flatpages的工作方式是它处理其他应用程序抛出的404。我想知道我是否可以做另一个平板式应用程序,在404之前得到一个破解在flatpages之前。到目前为止,我试过这个没有成功。模板会被渲染,但数据不会通过。
甚至可能吗?
答案 0 :(得分:3)
根据Django文档,您可以将自己的视图指定为404或500处理程序:
handler404 = 'mysite.views.my_custom_404_view'
因此,您的应用可以在views.py
中定义自定义错误处理视图,您可以将其设置为urls.py
有关详细信息,请参阅“Customizing Error views”。
答案 1 :(得分:1)
内置flatpages应用程序的工作方式是使用some middleware:中间件有一个名为“process_response”的函数,用于检查404状态代码的传出响应。如果响应是404,并且URL与平面页匹配,则中间件会抑制404并返回呈现的平面页。
您可以使用自己的中间件执行相同的操作。为了确保在flatpages代码之前调用您的代码,您的中间件应该在<{1}}设置中 flatpages后
MIDDLEWARE_CLASSES
它之后,而不是之前的原因是因为在响应阶段Django以相反的顺序应用中间件。