API för fillagring¶
Hämta standardlagringsklass¶
Django tillhandahåller praktiska sätt att komma åt standardlagringsklassen:
- storages¶
Ett ordboksliknande objekt som gör det möjligt att hämta en lagringsinstans med hjälp av dess alias enligt definitionen i
STORAGES
.storages
har ett attributbackends
, vilket som standard är det råa värde som anges iSTORAGES
.Dessutom tillhandahåller
storages
encreate_storage()
-metod som accepterar den ordbok som används iSTORAGES
för en backend, och returnerar en lagringsinstans baserad på den backend-definitionen. Detta kan vara användbart för tredjepartspaket som behöver instansiera lagringsenheter i tester:>>> 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
ger latent åtkomst till standardlagringssystemet som definieras avdefault
-nyckeln iSTORAGES
.DefaultStorage
använderstorages
internt.
- default_storage¶
default_storage
är en instans avDefaultStorage
.
Klassen FileSystemStorage
(filsystemlagring)¶
- class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None, allow_overwrite=False)[source]¶
Klassen
FileSystemStorage
implementerar grundläggande fillagring på ett lokalt filsystem. Den ärver frånStorage
och tillhandahåller implementationer för alla dess offentliga metoder.Observera
Metoden
FileSystemStorage.delete()
kommer inte att ge upphov till ett undantag om det angivna filnamnet inte finns.- location[source]¶
Absolut sökväg till den katalog som innehåller filerna. Standardvärdet är värdet i din
MEDIA_ROOT
-inställning.
- base_url[source]¶
URL som används för de filer som lagras på den här platsen. Standardvärdet är värdet i din inställning
MEDIA_URL
.
- file_permissions_mode[source]¶
De filsystembehörigheter som filen ska få när den sparas. Standardvärde är
FILE_UPLOAD_PERMISSIONS
.
- directory_permissions_mode[source]¶
De filsystembehörigheter som katalogen ska få när den sparas. Standardvärde är
FILE_UPLOAD_DIRECTORY_PERMISSIONS
.
- allow_overwrite¶
- New in Django 5.1.
Flagga för att kontrollera om det är tillåtet att spara en ny fil över en befintlig. Standardvärdet är
False
.
- get_created_time(name)[source]¶
Returnerar en
datetime
av systemets ctime, d.v.s.os.path.getctime()
. På vissa system (t.ex. Unix) är detta tidpunkten för den senaste ändringen av metadata, och på andra (t.ex. Windows) är det tidpunkten då filen skapades.
Klassen InMemoryStorage
(minneslagring)¶
- class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[source]¶
Klassen
InMemoryStorage
implementerar en minnesbaserad fillagring. Den har ingen persistens, men kan vara användbar för att påskynda tester genom att undvika diskåtkomst.- location[source]¶
Absolut sökväg till det katalognamn som tilldelats filer. Standardvärdet är värdet i din inställning
MEDIA_ROOT
.
- base_url[source]¶
URL som används för de filer som lagras på den här platsen. Standardvärdet är värdet i din inställning
MEDIA_URL
.
- file_permissions_mode[source]¶
De filsystembehörigheter som tilldelas filer, tillhandahålls för kompatibilitet med
FileSystemStorage
. Standardvärde ärFILE_UPLOAD_PERMISSIONS
.
- directory_permissions_mode[source]¶
De filsystembehörigheter som tilldelas kataloger, tillhandahålls för kompatibilitet med
FileSystemStorage
. Standardvärde ärFILE_UPLOAD_DIRECTORY_PERMISSIONS
.
Klassen Storage
(lagring)¶
- class Storage[source]¶
Klassen
Storage
tillhandahåller ett standardiserat API för lagring av filer, tillsammans med en uppsättning standardbeteenden som alla andra lagringssystem kan ärva eller åsidosätta efter behov.Observera
När metoder returnerar naiva
datetime
-objekt kommer den effektiva tidszonen som används att vara det aktuella värdet föros.environ['TZ']
; observera att detta vanligtvis ställs in från DjangosTIME_ZONE
.- delete(name)[source]¶
Raderar filen som refereras till av
namn
. Om borttagning inte stöds på mållagringssystemet kommer detta att ge upphov tillNotImplementedError
istället.
- exists(name)[source]¶
Returnerar
True
om en fil som refereras till av det angivna namnet redan finns i lagringssystemet.
- get_accessed_time(name)[source]¶
Returnerar en
datetime
av den senaste åtkomsttiden för filen. För lagringssystem som inte kan returnera den senaste åtkomsttiden kommer detta att ge upphov tillNotImplementedError
.Om
USE_TZ
ärTrue
, returneras en medvetendatetime
, annars returneras en naivdatetime
i den lokala tidszonen.
- get_alternative_name(file_root, file_ext)[source]¶
Returnerar ett alternativt filnamn baserat på parametrarna
file_root
ochfile_ext
, ett understreck plus en slumpmässig alfanumerisk sträng med 7 tecken läggs till filnamnet före tillägget.
- get_available_name(name, max_length=None)[source]¶
Returnerar ett filnamn baserat på parametern
name
som är ledigt och tillgängligt för att nytt innehåll ska kunna skrivas till på mållagringssystemet.Längden på filnamnet kommer inte att överstiga
max_length
, om det anges. Om ett fritt unikt filnamn inte kan hittas, kommer ettSuspiciousFileOperation
undantag att uppstå.Om det redan finns en fil med
namn
anropasget_alternative_name()
för att få ett alternativt namn.
- get_created_time(name)[source]¶
Returnerar en
datetime
av skapelsetiden för filen. För lagringssystem som inte kan returnera skapelsetiden kommer detta att ge upphov tillNotImplementedError
.Om
USE_TZ
ärTrue
, returneras en medvetendatetime
, annars returneras en naivdatetime
i den lokala tidszonen.
- get_modified_time(name)[source]¶
Returnerar en
datetime
av den senaste modifieringstiden för filen. För lagringssystem som inte kan returnera den senaste modifierade tiden kommer detta att ge upphov tillNotImplementedError
.Om
USE_TZ
ärTrue
, returneras en medvetendatetime
, annars returneras en naivdatetime
i den lokala tidszonen.
- get_valid_name(name)[source]¶
Returnerar ett filnamn baserat på parametern
name
som är lämpligt för användning på mållagringssystemet.
- generate_filename(filename)[source]¶
Validerar
filnamnet
genom att anropaget_valid_name()
och returnerar ett filnamn som kan skickas tillsave()
-metoden.Argumentet
filename
kan innehålla en sökväg som returneras avFileField.upload_to
. I så fall kommer sökvägen inte att skickas tillget_valid_name()
utan kommer att läggas till det resulterande namnet.Standardimplementeringen använder
os.path
-operationer. Åsidosätt den här metoden om det inte är lämpligt för din lagring.
- listdir(path)[source]¶
Listar innehållet i den angivna sökvägen och returnerar en 2-tupel av listor; det första objektet är kataloger och det andra objektet är filer. För lagringssystem som inte kan tillhandahålla en sådan lista kommer detta att ge upphov till ett
NotImplementedError
istället.
- open(name, mode='rb')[source]¶
Öppnar filen som anges av
name
. Observera att även om den returnerade filen garanterat är ettFile
-objekt, kan det i själva verket vara någon underklass. I fallet med fjärrlagring av filer innebär detta att läsning/skrivning kan vara ganska långsam, så var försiktig.
- path(name)[source]¶
Sökvägen till det lokala filsystemet där filen kan öppnas med Pythons standard
open()
. För lagringssystem som inte är tillgängliga från det lokala filsystemet kommer detta att ge upphov tillNotImplementedError
istället.
- save(name, content, max_length=None)[source]¶
Sparar en ny fil i lagringssystemet, företrädesvis med det angivna namnet. Om det redan finns en fil med detta namn
namn
kan lagringssystemet ändra filnamnet efter behov för att få ett unikt namn. Det faktiska namnet på den lagrade filen kommer att returneras.Argumentet
max_length
skickas vidare tillget_available_name()
.Argumentet
content
måste vara en instans avdjango.core.files.File
eller ett filliknande objekt som kan omslutas avFile
.