ファイルストレージ API¶
デフォルトのストレージクラスの取得¶
Djangoでは、デフォルトストレージクラスにアクセスするための便利な方法を提供しています。
- storages¶
STORAGESで定義されたエイリアスを使用してストレージインスタンスを取得できる、辞書ライクなオブジェクトです。storagesにはbackends属性があり、これはデフォルトでSTORAGESで提供された生の値に設定されます。さらに、
storagesはcreate_storage()メソッドを提供しており、このメソッドはバックエンドのためにSTORAGESで使用された辞書を受け取り、そのバックエンド定義に基づいたストレージインスタンスを返します。これは、テストでストレージをインスタンス化する必要があるサードパーティパッケージにとって便利です:>>> from django.core.files.storage import storages >>> storages.backends {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}, 'custom': {'BACKEND': 'package.storage.CustomStorage'}} >>> storage_instance = storages.create_storage({"BACKEND": "package.storage.CustomStorage"})
- class DefaultStorage[ソース]¶
DefaultStorageは、STORAGESで定義されたdefaultキーによって定義されたデフォルトのストレージシステムへの遅延アクセスを提供します。DefaultStorageは、内部的にstoragesを使用します。
- default_storage¶
default_storageはDefaultStorageのインスタンスです。
FileSystemStorage クラス¶
- class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None, allow_overwrite=False)[ソース]¶
FileSystemStorageクラスは、ローカルファイルシステム上での基本的なファイルストレージを実装しています。これはStorageから継承し、そこで定義されたすべてのパブリックメソッドに対する実装を提供します。注釈
FileSystemStorage.delete()メソッドは、指定されたファイル名が存在しない場合に例外を発生させません。- location[ソース]¶
ファイルを格納するディレクトリの絶対パス。デフォルトは
MEDIA_ROOT設定の値です。
- file_permissions_mode[ソース]¶
保存される際にファイルが受け取るファイルシステムの権限。デフォルトは
FILE_UPLOAD_PERMISSIONSです。
- directory_permissions_mode[ソース]¶
保存された際にそのディレクトリが受け取るファイルシステムの権限。デフォルトは
FILE_UPLOAD_DIRECTORY_PERMISSIONSです。
- allow_overwrite¶
- New in Django 5.1.
既存のファイルを上書きして新しいファイルを保存することを許可するかどうかを制御するフラグです。デフォルトは
Falseです。
- get_created_time(name)[ソース]¶
システムの ctime、つまり
os.path.getctime()のdatetimeを返します。一部のシステム(例えば Unix)では、これは最後のメタデータ変更の時間ですが、他のシステム(例えば Windows)では、ファイルの作成時間です。
InMemoryStorage クラス¶
- class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[ソース]¶
InMemoryStorageクラスはメモリベースのファイルストレージを実装しています。永続性はありませんが、ディスクアクセスを避けることでテストの高速化に役立ちます。- location[ソース]¶
ファイルに割り当てられたディレクトリ名の絶対パス。デフォルトは、
MEDIA_ROOT設定値を使います。
- file_permissions_mode[ソース]¶
ファイルに割り当てられたファイルシステムの権限は、
FileSystemStorageとの互換性を提供するために用意されています。デフォルトはFILE_UPLOAD_PERMISSIONSです。
- directory_permissions_mode[ソース]¶
ディレクトリに割り当てられたファイルシステムの権限であり、
FileSystemStorageとの互換性のために提供されます。デフォルトはFILE_UPLOAD_DIRECTORY_PERMISSIONSです。
Storage クラス¶
- class Storage[ソース]¶
Storageクラスは、ファイルを保存するための標準化された API と、他のすべてのストレージシステムが継承または必要に応じてオーバーライドできる一連のデフォルト動作を提供します。注釈
メソッドが naive な
datetimeオブジェクトを返す場合、実際に使用されるタイムゾーンはos.environ['TZ']の現在の値になります。これは通常、DjangoのTIME_ZONEから設定されることに注意してください。- delete(name)[ソース]¶
nameで参照されるファイルを削除します。対象のストレージシステムで削除がサポートされていない場合は、代わりにNotImplementedErrorを発生させます。
- get_accessed_time(name)[ソース]¶
ファイルの最終アクセス時刻を
datetimeで返します。最終アクセス時刻を返すことができないストレージシステムの場合はNotImplementedErrorを発生させます。USE_TZがTrueの場合、意識的(aware)なdatetimeを返します。それ以外の場合、ローカルタイムゾーンのナイーブ(naive)なdatetimeを返します。
- get_alternative_name(file_root, file_ext)[ソース]¶
file_rootおよびfile_extパラメータに基づいて代替ファイル名を返します。拡張子の前にアンダースコアとランダムな7文字の英数字文字列がファイル名に追加されます。
- get_available_name(name, max_length=None)[ソース]¶
nameパラメータに基づいて、ターゲットのストレージシステム上で新しいコンテンツを書き込むために利用可能かつ空いているファイル名を返します。max_lengthを指定した場合、ファイル名の長さはその値を超えません。自由な一意のファイル名が見つからない場合、SuspiciousFileOperation例外が発生します。nameという名前のファイルが既に存在する場合、代替名を取得するためにget_alternative_name()が呼び出されます。
- get_created_time(name)[ソース]¶
ファイルの作成時間を
datetimeで返します。作成時間を返すことができないストレージシステムの場合、NotImplementedErrorを発生させます。USE_TZがTrueの場合、意識的(aware)なdatetimeを返します。それ以外の場合、ローカルタイムゾーンのナイーブ(naive)なdatetimeを返します。
- get_modified_time(name)[ソース]¶
ファイルの最終更新時間の
datetimeを返します。最終更新時間を返すことができないストレージシステムの場合、NotImplementedErrorを発生させます。USE_TZがTrueの場合、意識的(aware)なdatetimeを返します。それ以外の場合、ローカルタイムゾーンのナイーブ(naive)なdatetimeを返します。
- generate_filename(filename)[ソース]¶
filenameをget_valid_name()によって検証し、save()メソッドに渡すべきファイル名を返します。filename引数には、FileField.upload_toによって返されたパスを含むことができます。その場合、パスはget_valid_name()に渡されることはありませんが、結果として得られた名前の前に再び追加されます。デフォルトの実装では
os.path操作を使用しています。この方法があなたのストレージに適していない場合は、このメソッドをオーバーライドしてください。
- listdir(path)[ソース]¶
指定されたパスの内容をリストアップし、2つのリストからなるタプルを返します。最初のアイテムはディレクトリで、2番目のアイテムはファイルです。このようなリストを提供できないストレージシステムでは、代わりに
NotImplementedErrorを発生させます。
- open(name, mode='rb')[ソース]¶
nameで指定されたファイルを開きます。返されるファイルは必ずFileオブジェクトである保証がありますが、実際にはサブクラスである可能性があります。リモートファイルストレージの場合、読み書きがかなり遅いかもしれないので注意してください。
- path(name)[ソース]¶
ファイルがPythonの標準
open()を使って開けるローカルファイルシステムのパス。ローカルファイルシステムからアクセスできないストレージシステムの場合、代わりにNotImplementedErrorを発生させます。
- save(name, content, max_length=None)[ソース]¶
ストレージシステムを使用して新しいファイルを保存します。すでに
nameという名前のファイルが存在する場合、ストレージシステムは一意な名前を得るために必要に応じてファイル名を変更することがあります。保存されたファイルの実際の名前が返されます。max_length引数はget_available_name()に渡されます。content引数は、django.core.files.Fileのインスタンス、またはFileでラップできるファイルライクオブジェクトでなければなりません。