[PYTHON] Laden Sie Dateien mit Django hoch

Django-Datei-Upload-Format

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 ヾ (.> ﹏ <.) ノ ✧ *.

Fügen Sie dem Modell Dateifelder hinzu

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/'

Datei hochladen

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

Lassen Sie uns ヾ (.> ﹏ <.) ノ ✧ * ausführen.

Ich werde es tatsächlich hochladen! ESrnAT2VAAU5oTz.png

Die Adresse wird in der DB gespeichert ESrnCeyUMAA9kT9.png

Die eigentliche Datei wird im Medienbereich gespeichert!

ESrnIckU4AEYYAn.jpg

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

Laden Sie Dateien mit Django hoch
Datei-Upload mit Django
Laden wir S3-Dateien mit CLI hoch
Behandeln Sie CSV-Dateien mit Django (Django-Import-Export)
Verwalten Sie Django-Konfigurationsdateien mit Python-Decouple
Internationalisierung mit Django
CRUD mit Django
Berechtigungsfehler beim Lesen der Django-Upload-Datei
Django 1.11 wurde mit Python3.6 gestartet
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Twitter OAuth mit Django
Erste Schritte mit Django 1
Mail mit Django senden
Verwenden Sie WENIGER mit Django
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Pooling mechanisieren mit Django
Konfigurieren Sie ein Modul mit mehreren Dateien in Django
Verwenden Sie MySQL mit Django
Django ab heute
Erste Schritte mit Django 2
Hochladen von Dateien in der generischen Klassenansicht von Django
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Minimale Konfigurations-Website-Umgebung mit Django
Erstellen Sie eine API mit Django
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie Django serverlos mit Lambda bereit
Python3 + Django ~ Mac ~ mit Apache
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Hochladen und Anpassen von Bildern mit django-ckeditor
Sortieren von Bilddateien mit Python (2)
Fangen Sie mit Django an! ~ Tutorial ④ ~
Sortieren Sie große Dateien mit Python
Sortieren von Bilddateien mit Python (3)
Erste Schritte mit Python Django (4)
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Bilddateien mit Python sortieren
Verwenden Sie Django, um Tweet-Daten zu speichern
Dateien mit teraterm übertragen [Hinweis]
Integrieren Sie PDF-Dateien in Python
TXT-Dateien mit Python lesen
Führen Sie eine AES-Verschlüsselung mit DJango durch
Einführung in Python Django (6)
Kombiniere zwei Bilder mit Django
Erste Schritte mit Django mit PyCharm
Informationen zum Umgang mit statischen Django-Dateien
Echtzeit-Web mit Django-Kanälen
Datei-Upload mit Flask + jQuery
Arbeiten mit JSON-Dateien in Matlab
Doppelte Submit-Unterdrückung mit Django
Django REST Framework mit Vue.js
Verwenden Sie prefetch_related bequem mit Django
Erste Schritte mit Python Django (5)