2016-10-11 4 views
0

警告を表示し、呼び出された機能を続行する方法はありますか?Pythonの竜巻を使用して警告を表示するには

私は竜巻でHTTPErrorが見つかりました。警告が表示されるようなものはありますか?

現在のスニペット:

if warning_bool: 
    warning_text = "Warning! You can still continue though..." 
    raise HTTPError(status_code=400, reason=warning_text) 

put_function() 

これは、エラーが発生し、関数が呼び出されません。

答えて

1

処理を続行したい場合は、エラーを発生させたくありません。それはあなたの設定に応じていくつかの効果があります。通常、エラーを発生させるとステータスは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 
関連する問題