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.storageshar ett attributbackends, vilket som standard är det råa värde som anges iSTORAGES.Dessutom tillhandahåller
storagesencreate_storage()-metod som accepterar den ordbok som används iSTORAGESfö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]¶
DefaultStorageger latent åtkomst till standardlagringssystemet som definieras avdefault-nyckeln iSTORAGES.DefaultStorageanvänderstoragesinternt.
- 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
FileSystemStorageimplementerar grundläggande fillagring på ett lokalt filsystem. Den ärver frånStorageoch 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
datetimeav 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
InMemoryStorageimplementerar 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
Storagetillhandahå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 tillNotImplementedErroristället.
- exists(name)[source]¶
Returnerar
Trueom en fil som refereras till av det angivna namnet redan finns i lagringssystemet.
- get_accessed_time(name)[source]¶
Returnerar en
datetimeav 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 naivdatetimei den lokala tidszonen.
- get_alternative_name(file_root, file_ext)[source]¶
Returnerar ett alternativt filnamn baserat på parametrarna
file_rootochfile_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
namesom ä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 ettSuspiciousFileOperationundantag att uppstå.Om det redan finns en fil med
namnanropasget_alternative_name()för att få ett alternativt namn.
- get_created_time(name)[source]¶
Returnerar en
datetimeav 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 naivdatetimei den lokala tidszonen.
- get_modified_time(name)[source]¶
Returnerar en
datetimeav 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 naivdatetimei den lokala tidszonen.
- get_valid_name(name)[source]¶
Returnerar ett filnamn baserat på parametern
namesom är lämpligt för användning på mållagringssystemet.
- generate_filename(filename)[source]¶
Validerar
filnamnetgenom att anropaget_valid_name()och returnerar ett filnamn som kan skickas tillsave()-metoden.Argumentet
filenamekan 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
NotImplementedErroristä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 tillNotImplementedErroristä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
namnkan lagringssystemet ändra filnamnet efter behov för att få ett unikt namn. Det faktiska namnet på den lagrade filen kommer att returneras.Argumentet
max_lengthskickas vidare tillget_available_name().Argumentet
contentmåste vara en instans avdjango.core.files.Fileeller ett filliknande objekt som kan omslutas avFile.