1

Django のファイル ストレージ API に関連するすべての例外をキャッチする必要があります。それは、読み取りまたは書き込みなどのためである可能性があります。ここでの問題は、その API で定義された一般的な例外クラスがないことです。たとえば、FileSystemStorage(デフォルト) を使用する場合、スローされる例外はIOErrorですが、S3 などのリモート ストレージを使用している場合は? 一般的な Boto 例外をいくつか追加するだけでよいことはわかっていますが、このコードを一般的なものにして、後で選択するストレージ バックエンドから切り離すことを望んでいます。

これは、状況を説明するサンプル コードです。

import contextlib

class SomeForm(forms.ModelForm):
    textfield = forms.CharField()

    class Meta:
        model = CSSTemplate

    def __init__(self, *args, **kwargs):
        super(SomeForm, self).__init__(*args, **kwargs)

        if not self.is_bound and self.instance and self.instance.file_field:
            try:
                with contextlib.closing(self.instance.file_field.file) as file_obj:
                    file_obj.open('r')
                    self['textfield'].field.initial = file_obj.read()
            except (IOError, ):  # <-- ???
                self.instance.file_field = ''

except節でどの例外クラスをチェックする必要がありますか?

4

1 に答える 1

0
try:

except OSError:
   //raise if file is already exist

except IOError:
   // is not a directory 

except ValueError:
   //raise if someone is attempted to access then denied
于 2013-02-24T06:07:11.027 に答える