Django {% url %} テンプレートタグは、提供された URL を反転できない場合、NoReverseMatch エラーを発生させます。これは開発では役に立ちますが、本番環境では、醜い 500 エラーでユーザーを停止させ、ページ全体をブロックし、サイトが壊れていると思わせてしまいます。
テンプレート開発者は、タイプミスでサイト全体をダウンさせることはできません。私がやりたいのは、この動作を透過的にオーバーライドして、本番環境でのみ、逆一致が見つからない場合に「#」などのデフォルトの URL を出力し、バックグラウンドで例外追跡システムにエラーを報告することです。ですが、500 エラーを発生させることなく、ユーザーが行っていたことを続行できます。
デフォルトの {% url %} タグを自分のより安全なバージョンに透過的に置き換える方法はありますか? サイトのすべてのテンプレートの先頭に {% load my_custom_url_tag %} を追加する必要はありません。ある時点で人々が忘れてしまい、それ以外の場合はタグの動作が同じになるためです。違いは、エラーの処理方法です。