ファイルストレージAPI—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/files/storage
移動先:案内検索

ファイルストレージAPI

現在のストレージクラスを取得する

Djangoは、現在のストレージクラスにアクセスするための2つの便利な方法を提供します。

class DefaultStorage
DefaultStorage は、:setting: `DEFAULT_FILE_STORAGE` で定義されている現在のデフォルトストレージシステムへの遅延アクセスを提供します。 DefaultStorage は、内部で get_storage_class()を使用します。
get_storage_class(import_path=None)

ストレージAPIを実装するクラスまたはモジュールを返します。

import_pathパラメータなしで呼び出されると、get_storage_classは、:setting: `DEFAULT_FILE_STORAGE` で定義されている現在のデフォルトのストレージシステムを返します。 import_pathが指定されている場合、get_storage_classは指定されたパスからクラスまたはモジュールをインポートしようとし、成功した場合はそれを返します。 インポートが失敗した場合、例外が発生します。


FileSystemStorageクラス

class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)

FileSystemStorage クラスは、ローカルファイルシステムに基本的なファイルストレージを実装します。 Storage から継承し、そのすべてのパブリックメソッドの実装を提供します。

location

ファイルを保持するディレクトリへの絶対パス。 デフォルトは、:setting: `MEDIA_ROOT` 設定の値です。

base_url

この場所に保存されているファイルを提供するURL。 デフォルトは、:setting: `MEDIA_URL` 設定の値です。

file_permissions_mode

ファイルが保存されたときに受け取るファイルシステムのアクセス許可。 デフォルトは:setting: `FILE_UPLOAD_PERMISSIONS` です。

directory_permissions_mode

ディレクトリが保存されたときに受け取るファイルシステムのアクセス許可。 デフォルトは:setting: `FILE_UPLOAD_DIRECTORY_PERMISSIONS` です。

ノート

FileSystemStorage.delete()メソッドは、指定されたファイル名が存在しない場合でも例外を発生させません。

get_created_time(name)

システムのctimeのdatetimeを返します。 os.path.getctime()。 一部のシステム(Unixなど)では、これが最後のメタデータ変更の時間であり、他のシステム(Windowsなど)では、ファイルの作成時間です。

バージョン3.1で変更: pathlib.PathのサポートがFileSystemStorage.save()メソッドに追加されました。


Storageクラス

class Storage

Storage クラスは、ファイルを保存するための標準化されたAPIと、他のすべてのストレージシステムが必要に応じて継承またはオーバーライドできる一連のデフォルトの動作を提供します。

ノート

メソッドがナイーブなdatetimeオブジェクトを返す場合、使用される有効なタイムゾーンはos.environ['TZ']の現在の値になります。 これは通常、Djangoの:setting: `TIME_ZONE` から設定されることに注意してください。

delete(name)

nameで参照されているファイルを削除します。 ターゲットストレージシステムで削除がサポートされていない場合、代わりにNotImplementedErrorが発生します。

exists(name)

指定された名前で参照されているファイルがストレージシステムにすでに存在する場合はTrueを返し、名前が新しいファイルで使用できる場合はFalseを返します。

get_accessed_time(name)

ファイルの最終アクセス時刻のdatetimeを返します。 最後にアクセスした時刻を返すことができないストレージシステムの場合、これによりNotImplementedErrorが発生します。

:setting: `USE_TZ`Trueの場合、対応するdatetimeを返します。それ以外の場合は、ローカルタイムゾーンでナイーブな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が発生します。

:setting: `USE_TZ`Trueの場合、対応するdatetimeを返します。それ以外の場合は、ローカルタイムゾーンでナイーブなdatetimeを返します。

get_modified_time(name)

ファイルの最終変更時刻のdatetimeを返します。 最終変更時刻を返すことができないストレージシステムの場合、これによりNotImplementedErrorが発生します。

:setting: `USE_TZ`Trueの場合、対応するdatetimeを返します。それ以外の場合は、ローカルタイムゾーンでナイーブなdatetimeを返します。

get_valid_name(name)

nameパラメータに基づいて、ターゲットストレージシステムでの使用に適したファイル名を返します。

generate_filename(filename)

get_valid_name()を呼び出してfilenameを検証し、 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でラップできるファイルのようなオブジェクトである必要があります。

size(name)

nameによって参照されるファイルの合計サイズをバイト単位で返します。 ファイルサイズを返すことができないストレージシステムの場合、代わりにNotImplementedErrorが発生します。

url(name)

nameが参照するファイルの内容にアクセスできるURLを返します。 URLによるアクセスをサポートしていないストレージシステムの場合、代わりにNotImplementedErrorが発生します。