Django ist ein sehr mächtiges Framework für die Entwicklung von Webanwendungen. Es beinhaltet viele integrierte Funktionalitäten zur Dateiverwaltung, die zum Hochladen, Speichern, Abrufen und Löschen von Dateien verwendet werden können.
Dateien in Django werden normalerweise in einem Feldmodell gespeichert, das als FileField bezeichnet wird. FileField ist eine eingebaute Modellfeldklasse in Django, die zum Speichern von Dateien verwendet wird. Hier ist ein einfacher Beispielcode für ein Modell, das eine Datei speichert:
```python
from django.db import models
class MyModel(models.Model):
file = models.FileField(upload_to=‘documents/%Y/%m/%d/’)
```
In diesem Beispiel wird die Datei in einem Verzeichnis mit dem Namen “documents”, gefolgt vom aktuellen Jahr, Monat und Tag gespeichert. Das Argument “upload_to” bestimmt, in welchem Verzeichnis die Datei gespeichert wird (Quelle: Django-Dokumentation, https://docs.djangoproject.com/en/3.1/ref/models/fields/#filefield).
Um eine Datei hochzuladen, benötigen Sie ein HTML-Formular, das das POST-Verfahren verwendet und den Attributwert “enctype” auf “multipart/form-data” setzt. In Django würde ein solches Formular mit der Formklasse erstellt. Hier ist ein Beispielcode:
```python
from django import forms
class UploadFileForm(forms.Form):
file = forms.FileField()
```
Sie können dann dieses Formular in Ihrer View verwenden, um die hochgeladene Datei zu verarbeiten und sie mit dem Modell zu speichern:
```python
from django.http import HttpResponseRedirect
from django.shortcuts import render
from .forms import UploadFileForm
from .models import MyModel
def upload_file(request): if request.method == ‘POST’: form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): new_file = MyModel(file = request.FILES[‘file’]) new_file.save()
return HttpResponseRedirect(‘/success/url/’) else: form = UploadFileForm() return render(request, ‘upload.html’, {‘form’: form}) ```In diesem Code wird, wenn das Formular valid ist, ein neues “MyModel” -Objekt erstellt, die hochgeladene Datei wird gespeichert und der Nutzer wird dann auf eine Erfolgsseite weitergeleitet (Quelle: Django-Dokumentation, https://docs.djangoproject.com/en/3.0/topics/http/file-uploads/).
Um eine gespeicherte Datei abzurufen, können Sie einfach auf das entsprechende Attribut des Modells zugreifen. Zum Beispiel, wenn Sie ein “MyModel” -Objekt namens “my_object” hätten, könnten Sie auf die gespeicherte Datei zugreifen und ihren URL erhalten mit “my_object.file.url”.
Zum Löschen einer Datei kann die Methode “delete” des FileField verwendet werden. Zum Beispiel, “my_object.file.delete()” würde die Datei löschen.
Gut zu wissen ist auch, dass Django auch eine ImageField-Modellfeldklasse hat, die speziell für Bilder gedacht ist. Es funktioniert genauso wie FileField, bietet aber zusätzliche Funktionen wie die Überprüfung, ob die hochgeladene Datei ein gültiges Bild ist, und die Fähigkeit, die Dimensionen des Bildes abzurufen.