In Django besteht das Hochladen von Dateien aus "Festlegen der Adresse in der Datenbank" und "Ablegen der eigentlichen Datei im Medienbereich"! Es gibt einen Typ, der den Blob-Typ vorerst verarbeitet. Wenn es jedoch um den Betrieb geht, ist es besser, die eigentliche Datei auf dem Server abzulegen und zum Zeitpunkt der Wartung zugänglich zu machen, als eine Datei in der Datenbank zu haben. Kühlbetrieb ist möglich ヾ (.> ﹏ <.) ノ ✧ *.
Django hat eine Funktion, die das oben genannte automatisch erledigt! Das ist das "** Dateifeld **". Setzen Sie einfach den Typ auf FileField und setzen Sie die Speicherzieladresse in ** upload_to **, und es wird automatisch registriert!
picture.py
from django.core.validators import FileExtensionValidator
from django.db import models
'''
Bildmodell
@author shibafu
'''
class Picture(models.Model):
id
name = models.CharField(max_length=200)
#Legen Sie Dateifelder fest
image = models.FileField(upload_to='upload_pict/%Y/%m/%d/', #upload_Stellen Sie die Speicherzieladresse auf ein. Wenn Sie dies tun, Medien_Upload unter root_pict/2020/02/Speichert das Bild auf 10
verbose_name='Hochgeladenes Bild',#Es scheint der Name zu sein, der auf dem Verwaltungsbildschirm angezeigt wird. Vielleicht müssen Sie es nicht einstellen
validators=[FileExtensionValidator(['jpg','png','gif', ])],#Erweiterungsvalidator. Fehler, wenn die Erweiterung der hochgeladenen Datei unterschiedlich ist
)
uploader = models.CharField(max_length=200)
uploadDate = models.DateField()
updateDate = models.DateField()
deleteFlg = models.BooleanField()
def __str__(self):
return '<Picture:id' + str(self.id) + ', ' + \
self.name + '(' + str(self.uploader) + ')>'
Ich werde auch ein Modellformular machen
PictUploadForm.py
'''
Modellformular für das Hochladen von Bildern
@author shibafu
'''
class PictUploadForm(forms.ModelForm):
class Meta:
model = Picture
fields = ['name', 'image']
Schließlich entscheiden Sie das Stammverzeichnis der Speicheradresse und die Einstellung ist abgeschlossen!
setting.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Ich mag es, aber ich lade es mit dem Modellformular hoch. In diesem Format das Anforderungsobjekt
PictService.py
'''
Ein Dienst, der eine bildbezogene Verarbeitung durchführt
@author shibafu
'''
class PictService:
#Fügen Sie ein neues Bild hinzu(Für das Bild-Upload-Formular)
def createFromRequest(self, request):
pictObj = Picture()
pictObj.uploader = "Der Standardgast!"
pictObj.uploadDate = datetime.datetime.today()
pictObj.updateDate = datetime.datetime.today()
pictObj.deleteFlg = False
#Übergeben Sie sowohl POST als auch FILE für Dateien
#Durch Festlegen von instanse können Sie den Wert festlegen, der auf der Serverseite anstelle der Anforderung automatisch festgelegt werden kann
pict:PictUploadForm = PictUploadForm(request.POST, request.FILES, instance=pictObj)
pict.errors
if pict.is_valid():
#Überprüfen Sie, ob der Wert korrekt ist(Validierung)
pict.save()
#Wert in DB registrieren
Ich werde es tatsächlich hochladen!
Die Adresse wird in der DB gespeichert
Die eigentliche Datei wird im Medienbereich gespeichert!
Durch Erstellen einer Funktion zum Benennen von Dateien können Sie den Dateinamen beim Hochladen ändern! Ich konnte das Hochladen von Dateien implementieren!
Verweise [Django] Verwendung der Datei-Upload-Funktion [Grundeinstellungen]
Recommended Posts