API de stockage des fichiers¶
Obtention de la classe de stockage par défaut¶
Django offre des manières pratiques d’accéder à la classe de stockage par défaut :
- storages¶
A dictionary-like object that allows retrieving a storage instance using its alias as defined by
STORAGES
.storages
has an attributebackends
, which defaults to the raw value provided inSTORAGES
.Additionally,
storages
provides acreate_storage()
method that accepts the dictionary used inSTORAGES
for a backend, and returns a storage instance based on that backend definition. This may be useful for third-party packages needing to instantiate storages in tests:>>> 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[source]¶
DefaultStorage
offre un accès différé au système de stockage par défaut tel que défini par la clédefault
dansSTORAGES
.DefaultStorage
utilisestorages
en interne.
- default_storage¶
default_storage
est une instance deDefaultStorage
.
La classe FileSystemStorage
¶
- class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None, allow_overwrite=False)[source]¶
La classe
FileSystemStorage
implémente le stockage de fichiers de base sur un système de fichiers local. Elle hérite deStorage
et offre des implémentations pour toutes les méthodes publiques de celle-ci.Note
La méthode
FileSystemStorage.delete()
ne renvoie pas d’exception si le nom de fichier fourni en paramètre n’existe pas.- location[source]¶
Chemin absolu vers le répertoire qui contiendra les fichiers. La valeur par défaut est la valeur du réglage
MEDIA_ROOT
.
- base_url[source]¶
URL de base pour servir les fichiers stockés à cet emplacement. La valeur par défaut est la valeur du réglage
MEDIA_URL
.
- file_permissions_mode[source]¶
Les permissions de système de fichiers que le fichier reçoit quand il est enregistré. La valeur par défaut correspond à
FILE_UPLOAD_PERMISSIONS
.
- directory_permissions_mode[source]¶
Les permissions de système de fichiers que le répertoire reçoit quand il est enregistré. La valeur par défaut correspond à
FILE_UPLOAD_DIRECTORY_PERMISSIONS
.
- allow_overwrite¶
- New in Django 5.1.
Drapeau pour contrôler la permission d’enregistrement de nouveaux fichiers en écrasant des fichiers existants. Contient
False
par défaut.
- get_created_time(name)[source]¶
Renvoie une heure
datetime
de la valeur ctime du système, c’est-à-direos.path.getctime()
. Sur certains systèmes (comme Unix), il s’agit de la date de la dernière modification de métadonnée du fichier alors que sur d’autres systèmes (comme Windows), il s’agit de la date de création du fichier.
La classe InMemoryStorage
¶
- class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[source]¶
La classe
InMemoryStorage
implémente un stockage de fichiers en mémoire vive. Il n’a aucune persistence mais peut être utile pour accélérer les tests en évitant d’accéder au disque.- location[source]¶
Chemin absolu vers le nom ue répertoire dédié aux fichiers. La valeur par défaut est la valeur du réglage
MEDIA_ROOT
.
- base_url[source]¶
URL de base pour servir les fichiers stockés à cet emplacement. La valeur par défaut est la valeur du réglage
MEDIA_URL
.
- file_permissions_mode[source]¶
Les permissions de système de fichiers attribuées aux fichiers, données par compatibilité avec
FileSystemStorage
. La valeur par défaut correspond àFILE_UPLOAD_PERMISSIONS
.
- directory_permissions_mode[source]¶
Les permissions de système de fichiers attribuées aux répertoires, données par compatibilité avec
FileSystemStorage
. La valeur par défaut correspond àFILE_UPLOAD_DIRECTORY_PERMISSIONS
.
La classe Storage
¶
- class Storage[source]¶
La classe
Storage
fournit une API standardisée pour le stockage de fichiers, accompagnée d’un ensemble de comportements par défaut que tous les autres systèmes de stockage peuvent hériter ou surcharger en cas de besoin.Note
Lorsque les méthodes renvoient des objets
datetime
naïfs, le fuseau horaire réellement utilisé correspond à la valeur actuelle deos.environ['TZ']
. Notez que cette valeur est généralement définie à partir du réglageTIME_ZONE
de Django.- delete(name)[source]¶
Supprime le fichier désigné par
name
. Si la suppression n’est pas prise en charge par le système de stockage cible, une exceptionNotImplementedError
est générée.
- exists(name)[source]¶
Renvoie
True
si le fichier désigné par le nom indiqué existe déjà dans le système de stockage.
- get_accessed_time(name)[source]¶
Renvoie une date/heure
datetime
du dernier accès au fichier. Pour les systèmes de stockage incapables de renvoyer la date du dernier accès, cette méthode génère l’exceptionNotImplementedError
.Si
USE_TZ
vautTrue
, renvoie un objetdatetime
conscient, sinon un objetdatetime
naïf est renvoyé dans le fuseau horaire local.
- get_alternative_name(file_root, file_ext)[source]¶
Renvoie un nom de fichier différent basé sur les paramètres
file_root
etfile_ext
. Un soulignement suivi d’une chaîne aléatoire de 7 caractères alphanumériques sont ajoutés à la fin du nom du fichier avant l’extension.
- get_available_name(name, max_length=None)[source]¶
Renvoie un nom de fichier sur la base du paramètre
name
et qui est disponible pour recevoir un nouveau contenu à écrire sur le système de stockage cible.La longueur du nom de fichier ne dépassera pas
max_length
, si cette option est indiquée. Si un nom de fichier unique n’est pas disponible, une exceptionSuspiciousFileOperation
est générée.Si un fichier avec
name
existe déjà,get_alternative_name()
est appelée pour obtenir un nom différent.
- get_created_time(name)[source]¶
Renvoie une date/heure
datetime
de création du fichier. Pour les systèmes de stockage incapables de renvoyer la date de création, cette méthode génère l’exceptionNotImplementedError
.Si
USE_TZ
vautTrue
, renvoie un objetdatetime
conscient, sinon un objetdatetime
naïf est renvoyé dans le fuseau horaire local.
- get_modified_time(name)[source]¶
Renvoie une date/heure
datetime
de la dernière modification du fichier. Pour les systèmes de stockage incapables de renvoyer la date de dernière modification, cette méthode génère l’exceptionNotImplementedError
.Si
USE_TZ
vautTrue
, renvoie un objetdatetime
conscient, sinon un objetdatetime
naïf est renvoyé dans le fuseau horaire local.
- get_valid_name(name)[source]¶
Renvoie un nom de fichier sur la base du paramètre
name
et qui est adapté aux usages du système de stockage cible.
- generate_filename(filename)[source]¶
Valide le nom de fichier
filename
en appelantget_valid_name()
et renvoie un nom de fichier à transmettre à la méthodesave()
.Le paramètre
filename
peut inclure un chemin tel que renvoyé parFileField.upload_to
. Dans ce cas, le chemin ne sera pas transmis àget_valid_name()
, mais sera ajouté au début du nom résultant.L’implémentation par défaut utilise des opérations
os.path
. Surchargez cette méthode si ce n’est pas approprié pour votre type de stockage.
- listdir(path)[source]¶
Énumère le contenu du chemin indiqué, renvoyant un tuple de deux listes ; la première est une liste de répertoires, la seconde contient les fichiers. Pour les systèmes de stockage qui ne peuvent pas fournir une telle liste, une exception
NotImplementedError
est générée.
- open(name, mode='rb')[source]¶
Ouvre le fichier désigné par
name
. Notez que bien que le fichier renvoyé soit garanti être un objetFile
, il se peut qu’il s’agisse d’une sous-classe. Dans le cas de systèmes de stockage distants, cela signifie que la lecture et l’écriture peuvent être lentes, il faut le savoir.
- path(name)[source]¶
Le chemin du système de fichiers local où le fichier peut être ouvert en utilisant l’appel Python standard
open()
. Pour les systèmes de stockage qui ne sont pas accessibles à partir du système de fichiers local, cette méthode génère une exceptionNotImplementedError
.
- save(name, content, max_length=None)[source]¶
Enregistre un nouveau fichier en utilisant le système de stockage, de préférence avec le nom indiqué. Si le nom
name
est déjà utilisé pour un autre fichier, le système de stockage peut modifier le nom de fichier afin d’obtenir un nom unique si nécessaire. Le nom réellement utilisé pour stocker le fichier est renvoyé.Le paramètre
max_length
est transmis plus loin àget_available_name()
.Le paramètre
content
doit être une instance dedjango.core.files.File
ou d’un objet de type fichier pouvant être enveloppé parFile
.