0

すべてのDjangoリバース例外をキャッチして、500ではなく404を発生させるかどうかを検討しています。

この質問は次のようなものです: NoReverseMatchの代わりにDjangoのリバースとURLのデフォルト

たとえば、Djangoのネイティブログインデコレータを模倣した認証アプリがあるとします。ビューが装飾されていて、ユーザーが認証されていない場合、ユーザーは最初にログインページにリダイレクトされます。

デコレータ内でreverse('login')呼び出しがあります。urlsconfで提供されているURL名を「my_login」に変更することにしましたが、意図せずにデコレータを更新するのを忘れたとしましょう。

これは404または500エラーである必要がありますか?例外を処理するための合理的なフォールバックがないため、私は500に傾くでしょう。リダイレクトは内部であり、リソースは存在します。私はある種の「タイプミス」を作成しました。

各リバースコールを試して/除外することは、NameErrorsとSyntaxErrorsのキャッチに向けて微妙な流れをたどっているようです。

ご協力いただきありがとうございます。

4

1 に答える 1

4

404は、クライアントが要求したリソースが見つからない場合に使用します。リバースはサーバー操作であるため、5XX応答が適切です。

于 2012-08-09T06:00:04.277 に答える