Objektet ”FilLink to this heading

Modulen django.core.files och dess undermoduler innehåller inbyggda klasser för grundläggande filhantering i Django.

Klassen ”FilLink to this heading

class File(file_object, name=None)Link to this definition

Klassen File är ett tunt hölje runt Pythons file object med några Django-specifika tillägg. Internt använder Django denna klass när den behöver representera en fil.

File-objekt har följande attribut och metoder:

nameLink to this definition

Namnet på filen inklusive den relativa sökvägen från MEDIA_ROOT.

sizeLink to this definition

Filens storlek i byte.

fileLink to this definition

Den underliggande filobjekt som denna klass omsluter.

modeLink to this definition

Läs-/skrivläge för filen.

open(mode=None, *args, **kwargs)Link to this definition

Öppna eller återöppna filen (som också gör File.seek(0)). Argumentet mode tillåter samma värden som Pythons inbyggda open(). *args och **kwargs skickas efter mode till Pythons inbyggda open().

När en fil öppnas på nytt kommer mode att åsidosätta det läge som filen ursprungligen öppnades med; None innebär att filen öppnas på nytt med det ursprungliga läget.

Den kan användas som en kontexthanterare, t.ex. with file.open() as f:.

__iter__()Link to this definition

Iterera över filen och få fram en rad i taget.

chunks(chunk_size=None)Link to this definition

Iterera över filen och få fram ”chunks” av en viss storlek. chunk_size är som standard 64 KB.

Detta är särskilt användbart med mycket stora filer eftersom det gör att de kan strömmas från disken och undviker att lagra hela filen i minnet.

multiple_chunks(chunk_size=None)Link to this definition

Returnerar True om filen är tillräckligt stor för att kräva flera bitar för att få tillgång till allt innehåll med en viss chunk_size.

close()Link to this definition

Stäng filen.

Förutom de listade metoderna, File följande attribut och metoder för sitt file-objekt: encoding, fileno, flush, isatty, newlines, read, readinto, readline, readlines, seek, tell, truncate, write, writelines, readable(), writable() och seekable().

Klassen ”ContentFile” (innehållsfil)Link to this heading

class ContentFile(content, name=None)Link to this definition

Klassen ContentFile ärver från File, men till skillnad från File arbetar den med stränginnehåll (bytes stöds också), snarare än en faktisk fil. Till exempel:

Code
from django.core.files.base import ContentFile

f1 = ContentFile("esta frase está en español")
f2 = ContentFile(b"these are bytes")

Klassen ”ImageFile” (bildfil)Link to this heading

class ImageFile(file_object, name=None)Link to this definition

Django tillhandahåller en inbyggd klass specifikt för bilder. django.core.files.images.ImageFile ärver alla attribut och metoder från File, och tillhandahåller dessutom följande:

widthLink to this definition

Bildens bredd i pixlar.

heightLink to this definition

Bildens höjd i pixlar.

Ytterligare metoder för filer som är kopplade till objektLink to this heading

Alla File som är associerade med ett objekt (som med Car.photo, nedan) kommer också att ha ett par extra metoder:

File.save(name, content, save=True)Link to this definition

Sparar en ny fil med det filnamn och innehåll som anges. Detta kommer inte att ersätta den befintliga filen, utan skapa en ny fil och uppdatera objektet så att det pekar på den. Om save är True kommer modellens metod save() att anropas när filen har sparats. Det vill säga dessa två rader:

Python console
>>> car.photo.save("myphoto.jpg", content, save=False)
>>> car.save()

är likvärdiga med:

Python console
>>> car.photo.save("myphoto.jpg", content, save=True)

Observera att argumentet content måste vara en instans av antingen File eller av en underklass av File, t.ex. ContentFile.

File.delete(save=True)Link to this definition

Tar bort filen från modellinstansen och raderar den underliggande filen. Om save är True kommer modellens metod save() att anropas när filen har raderats.