[PYTHON] Télécharger des fichiers avec Django

Format de téléchargement de fichier Django

Dans Django, le téléchargement de fichier consiste à "définir l'adresse dans la base de données" et à "mettre le fichier réel dans la zone multimédia"! Il existe un type qui gère le type Blob pour le moment, mais en ce qui concerne le fonctionnement, il est préférable de placer le fichier réel sur le serveur et de le rendre accessible pendant la maintenance plutôt que d'avoir un fichier dans la base de données. Un fonctionnement froid est possible ヾ (.> ﹏ <.) ノ ✧ *.

Ajouter des champs de fichier au modèle

Django a une fonction qui fait ce qui précède automatiquement! C'est le "** champ de fichier **". Définissez simplement le type sur FileField et définissez l'adresse de destination de sauvegarde dans ** upload_to **, et elle sera automatiquement enregistrée!

picture.py



from django.core.validators import FileExtensionValidator
from django.db import models

'''
Modèle d'image
@author shibafu
'''
class Picture(models.Model):
    id
    name = models.CharField(max_length=200)
    #Définir les champs de fichier
    image = models.FileField(upload_to='upload_pict/%Y/%m/%d/', #upload_Définissez l'adresse de destination de sauvegarde sur. Si vous faites cela, les médias_télécharger sous la racine_pict/2020/02/Enregistre l'image sur 10
                             verbose_name='Image téléchargée',#Cela semble être le nom affiché sur l'écran de gestion. Peut-être que vous n'avez pas à le définir
                             validators=[FileExtensionValidator(['jpg','png','gif', ])],#Validateur d'extension. Erreur lorsque l'extension du fichier téléchargé est différente
                             )
    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) + ')>'

Je vais également faire un formulaire modèle

PictUploadForm.py


'''
Modèle de formulaire pour le téléchargement d'images
@author shibafu
'''
class PictUploadForm(forms.ModelForm):
    class Meta:
        model = Picture
        fields = ['name', 'image']

Enfin, décidez du répertoire racine de l'adresse de sauvegarde et le réglage est terminé!

setting.py


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Téléverser un fichier

Je l'aime bien, mais je le télécharge en utilisant le formulaire modèle. Dans ce format, l'objet de requête

PictService.py


'''
Un service qui effectue un traitement lié à l'image
@author shibafu
'''

class PictService:

    #Ajouter une nouvelle image(Pour le formulaire de téléchargement d'image)
    def createFromRequest(self, request):
        pictObj = Picture()
        pictObj.uploader = "L'invité par défaut!"
        pictObj.uploadDate = datetime.datetime.today()
        pictObj.updateDate = datetime.datetime.today()
        pictObj.deleteFlg = False

        #Passer à la fois POST et FILE pour les fichiers
        #En définissant instanse, vous pouvez décider de la valeur qui peut être automatiquement définie côté serveur au lieu de la requête
        pict:PictUploadForm = PictUploadForm(request.POST, request.FILES, instance=pictObj)
        pict.errors
        if pict.is_valid():
        #Vérifiez si la valeur est correcte(Validation)
            pict.save()
            #Enregistrer la valeur dans DB

Exécutons ヾ (.> ﹏ <.) ノ ✧ *.

Je vais le télécharger! ESrnAT2VAAU5oTz.png

L'adresse est conservée dans le DB ESrnCeyUMAA9kT9.png

Le fichier actuel est enregistré dans la zone multimédia!

ESrnIckU4AEYYAn.jpg

En créant une fonction pour nommer les fichiers, vous pouvez changer le nom du fichier lors du téléchargement! J'ai pu implémenter le téléchargement de fichiers!

Les références [Django] Comment utiliser la fonction de téléchargement de fichiers [Paramètres de base]

Recommended Posts

Télécharger des fichiers avec Django
Téléchargement de fichiers avec django
Téléchargeons des fichiers S3 avec CLI
Gérer les fichiers csv avec Django (django-import-export)
Gérer les fichiers de configuration Django avec Python-decouple
Internationalisation avec Django
CRUD avec Django
Erreur d'autorisation lors de la lecture du fichier de téléchargement Django
Django 1.11 a démarré avec Python3.6
Résumé du développement avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
Twitter OAuth avec Django
Premiers pas avec Django 1
Envoyer des e-mails avec Django
Utilisez LESS avec Django
Télécharger des fichiers sur Google Drive avec Lambda (Python)
La mutualisation mécanise avec Django
Configurer un module avec plusieurs fichiers dans Django
Utiliser MySQL avec Django
Django à partir d'aujourd'hui
Premiers pas avec Django 2
Comment télécharger des fichiers dans la vue de classe générique Django
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Environnement de site Web de configuration minimale avec django
Créer une API avec Django
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Déployer Django sans serveur avec Lambda
Python3 + Django ~ Mac ~ avec Apache
Premiers pas avec Python Django (1)
Créer une page d'accueil avec django
Téléchargement d'images et personnalisation avec django-ckeditor
Tri des fichiers image avec Python (2)
Lancez-vous avec Django! ~ Tutoriel ④ ~
Trier de gros fichiers avec python
Tri des fichiers image avec Python (3)
Premiers pas avec Python Django (4)
Créer une application Web avec Django
Premiers pas avec Python Django (3)
Combinez Fast API avec Django ORM
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Tri des fichiers image avec Python
Utilisez Django pour enregistrer les données de tweet
Transférer des fichiers avec Teraterm [Note]
Intégrez des fichiers PDF avec Python
Lire des fichiers .txt avec Python
Effectuer le cryptage AES avec DJango
Introduction à Python Django (6)
Combinez deux images avec Django
Premiers pas avec Django avec PyCharm
A propos de la gestion des fichiers statiques Django
Web en temps réel avec les chaînes Django
Téléchargement de fichiers avec Flask + jQuery
Travailler avec des fichiers JSON dans Matlab
Suppression de double envoi avec Django
Framework Django REST avec Vue.js
Utilisez prefetch_related commodément avec Django
Premiers pas avec Python Django (5)