djangoで発生した例外をもみ消す

djangoで発生した例外を勝手なご都合により(無理矢理)ステータスコード200にしつつ、例外の内容はそのままHTMLで出したいことがありました。

というわけでやってみました。

結果としては、それなりに納得出来るくらいの物は出来ました。
表示をもう少し整形した方が良いのかもしれません。

具体的にどうしたかというとWSGIHandlerを継承したクラスを作って__call__をオーバーライドします。で、作ったクラスを使うようにすればOKです。

これだけです。やってしまえば簡単なことなんですが、色々と理解するのに苦労しました。

最初デコレータでexceptしちまえとか思ったんですが、それだと各関数をデコレートしないと駄目になってしまい付けるのも外すのも面倒です。

もちろんデバッグ用ですのでパフォーマンスとかは考えてませんが
エラー内容が確認しやすくなるのでデバッグが少し楽になるかもしれません。