処理を続行したい場合は、エラーを発生させたくありません。それはあなたの設定に応じていくつかの効果があります。通常、エラーを発生させるとステータスは200以外のものになります。これはおそらくあなたが望むものではありません。それは一般的にあなたが持っている例外ログをトリップします(私たちの場合、それはsentryにエラーを送ります)。そして、通常、データベーストランザクションを自動的にロールバックします。
ユーザーに「悪い」と警告を表示したいが、処理を続行したい場合は、もう1つの仕組みが必要です。私は文脈によってこの状況を扱う2つの異なる方法があります。ほとんどの場合、Cookieを設定して表示することで、次のページの読み込み時に自動的にメッセージを表示します(警告を受けたポストの後)。あなたのアプリがどのように設定されているかによって、あなたにとって効果的なものは異なります。あなたの呼び出しがすべてajax呼び出しである場合、警告やAjax呼び出しに組み込まれた他のメッセージを返すためのオブジェクトを持つことができます。
もう1つのことは、多くの警告が出る可能性のあるバッチコマンドを処理しているページでは、警告のリストを処理する方法を知っている警告がある場合にロードする特別なページがあることです。
ここでは、Pythonで警告メッセージを設定し読み込むコードを示します。これは基本コントローラークラスにあり、すべてのコントローラーで使用できるようになっています。また、読み込んだ部分をjavascriptで書くこともできます:
def flash(self, msg, msg_type="info"):
self.flash_info = (msg, msg_type)
self.set_cookie('flash', base64.b64encode(bytes(json.dumps([msg, msg_type]), 'utf-8')))
def get_flash(self):
msg = None
msg_type = None
if hasattr(self, "flash_info"):
msg, msg_type = self.flash_info
else:
flash_msg = self.get_cookie('flash')
if flash_msg:
msg, msg_type = json.loads(base64.b64decode(flash_msg).decode('utf-8'))
self.clear_cookie('flash')
self.clear_cookie('flash')
return msg, msg_type