Maison développement back-end Tutoriel Python Compétences en matière de téléchargement de fichiers dans le framework Django

Compétences en matière de téléchargement de fichiers dans le framework Django

Jun 18, 2023 am 08:24 AM
文件上传 框架 django

Ces dernières années, les applications Web sont devenues de plus en plus populaires et nombre d'entre elles nécessitent une fonctionnalité de téléchargement de fichiers. Dans le framework Django, il n'est pas difficile d'implémenter la fonction de téléchargement de fichiers, mais dans le développement réel, nous devons également traiter les fichiers téléchargés. D'autres opérations incluent la modification des noms de fichiers, la limitation de la taille des fichiers et d'autres problèmes. Cet article partagera quelques techniques de téléchargement de fichiers dans le framework Django.

1. Éléments de téléchargement du fichier de configuration
Dans le projet Django, pour configurer le téléchargement de fichier, vous devez le configurer dans le fichier settings.py. Ci-dessous, nous présentons plusieurs éléments de configuration importants.

  1. Chemin de téléchargement des fichiers
    Dans settings.py, nous pouvons définir le chemin pour stocker les fichiers téléchargés, comme suit :

    MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
    Copier après la connexion

    Dans cet élément de configuration, nous définissons le répertoire racine pour stocker les fichiers téléchargés en tant que téléchargements, le chemin du média fichiers Il est calculé par rapport au répertoire où se trouve le fichier settings.py. Nous pouvons également ajouter des règles d'URL correspondantes dans le urls.py du projet Django afin que les utilisateurs puissent obtenir des fichiers téléchargés en accédant à l'URL.

  2. Formats de fichiers pris en charge
    Le contrôle du format de fichier est un contenu très important Nous pouvons spécifier le format des fichiers téléchargés via les éléments de configuration suivants.

    ALLOWED_FILE_TYPES = ['jpg', 'jpeg', 'png', 'gif', 'pdf']
    Copier après la connexion

    Notez que nous devons convertir tous les formats de fichiers en lettres minuscules.

  3. Limite de taille de fichier
    Le framework Django limite la taille de tous les fichiers à 2,5 Mo maximum par défaut. Si nous devons modifier cette valeur limite, nous pouvons la modifier dans l'élément de configuration settings.py.

    MAX_UPLOAD_SIZE = 10485760 # 10MB
    Copier après la connexion

    Dans cette configuration, nous limitons la taille maximale du fichier de téléchargement à 10 Mo.

2. Téléchargement de fichiers
Nous pouvons télécharger des fichiers via les composants du formulaire Django. Voici un exemple simple de formulaire de téléchargement de fichier :

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="document" accept=".pdf">
    <input type="submit" value="Submit">
</form>
Copier après la connexion

Notez que l'attribut enctype doit être multipart/form-data pour prendre en charge le téléchargement de fichiers.

Dans la fonction d'affichage, nous pouvons utiliser la méthode request.FILES.get() pour obtenir le fichier téléchargé. Cette méthode renvoie un objet fichier. Voici un exemple simple :

def upload(request):
    if request.method == 'POST':
        file = request.FILES.get('document')
        if file:
            handle_uploaded_file(file)
            messages.success(request, '上传成功')
            return redirect('home')
        else:
            messages.error(request, '上传失败')
            return redirect('upload')
    else:
        return render(request, 'upload.html')
Copier après la connexion

Dans cet exemple, nous obtenons d'abord l'objet fichier téléchargé, puis appelons la fonction handle_uploaded_file() pour l'enregistrer dans le chemin spécifié. En l'absence de fichiers téléchargés, nous pouvons envoyer des messages d'erreur aux utilisateurs via le module de messages.

3. Nommage des fichiers
Afin de mieux gérer les fichiers téléchargés sur le serveur, nous vous recommandons de nommer les fichiers téléchargés avec un nom de fichier unique contenant un horodatage. Voici un exemple simple :

def handle_uploaded_file(file):
    date = datetime.now().strftime("%Y%m%d%H%M%S")
    filename = f"{date}_{file.name}"
    path = os.path.join(MEDIA_ROOT, filename)
    with open(path, 'wb+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)
Copier après la connexion

Tout d'abord, nous utilisons le module datetime pour obtenir la date et l'heure actuelles et les convertir au format chaîne. Nous combinons ensuite cet horodatage avec le nom de fichier d'origine pour générer un nouveau nom de fichier. Enfin, nous combinons le nouveau nom de fichier avec le chemin d'accès au fichier téléchargé et écrivons le contenu du fichier téléchargé dans le fichier à l'aide de la méthode chunks() de l'objet fichier.

4. Taille du fichier
Afin d'éviter des problèmes de serveur, nous devons limiter la taille des fichiers téléchargés. Voici une fonction simple de vérification de la taille du fichier :

def check_file_size(file):
    if file.size > MAX_UPLOAD_SIZE:
        raise ValidationError(f'上传文件大小最大为 {MAX_UPLOAD_SIZE / 1048576} MB')
Copier après la connexion

Dans cette fonction, nous vérifions si la taille du fichier téléchargé dépasse la taille maximale de téléchargement. S'il dépasse, nous lançons une exception ValidationError et invitons l'utilisateur. Gérez cette exception dans la fonction d'affichage :

def upload(request):
    if request.method == 'POST':
        file = request.FILES.get('document')
        if file:
            try:
                check_file_size(file)
            except ValidationError as e:
                messages.error(request, e)
                return redirect('upload')
            else:
                handle_uploaded_file(file)
                messages.success(request, '上传成功')
                return redirect('home')
        else:
            messages.error(request, '上传失败')
            return redirect('upload')
    else:
        return render(request, 'upload.html')
Copier après la connexion

De cette façon, nous avons un meilleur contrôle sur la taille du fichier téléchargé.

Résumé :

  1. L'implémentation du téléchargement de fichiers dans le framework Django nécessite certaines configurations, notamment la définition du chemin de téléchargement du fichier, les formats de fichiers pris en charge et la limitation de la taille du fichier.
  2. Le téléchargement de fichiers est implémenté via le composant de formulaire Django et la fonction d'affichage peut obtenir le fichier téléchargé via la méthode request.FILES.get().
  3. Une fois le fichier téléchargé, nous vous recommandons de renommer le fichier et d'utiliser l'horodatage pour générer un nom de fichier unique.
  4. Limitez la taille des fichiers téléchargés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment implémenter le téléchargement de fichiers par glisser-déposer dans Golang ? Comment implémenter le téléchargement de fichiers par glisser-déposer dans Golang ? Jun 05, 2024 pm 12:48 PM

Comment implémenter le téléchargement de fichiers par glisser-déposer dans Golang ? Activez le middleware ; gérez les demandes de téléchargement de fichiers ; créez du code HTML pour la zone de glisser-déposer ; ajoutez du code JavaScript pour gérer les événements de glisser-déposer.

Comment évaluer la rentabilité du support commercial des frameworks Java Comment évaluer la rentabilité du support commercial des frameworks Java Jun 05, 2024 pm 05:25 PM

L'évaluation du rapport coût/performance du support commercial pour un framework Java implique les étapes suivantes : Déterminer le niveau d'assurance requis et les garanties de l'accord de niveau de service (SLA). L’expérience et l’expertise de l’équipe d’appui à la recherche. Envisagez des services supplémentaires tels que les mises à niveau, le dépannage et l'optimisation des performances. Évaluez les coûts de support commercial par rapport à l’atténuation des risques et à une efficacité accrue.

Comment les options légères des frameworks PHP affectent-elles les performances des applications ? Comment les options légères des frameworks PHP affectent-elles les performances des applications ? Jun 06, 2024 am 10:53 AM

Le framework PHP léger améliore les performances des applications grâce à une petite taille et une faible consommation de ressources. Ses fonctionnalités incluent : une petite taille, un démarrage rapide, une faible utilisation de la mémoire, une vitesse de réponse et un débit améliorés et une consommation de ressources réduite. Cas pratique : SlimFramework crée une API REST, seulement 500 Ko, une réactivité élevée et un débit élevé.

Comment la courbe d'apprentissage des frameworks PHP se compare-t-elle à celle d'autres frameworks de langage ? Comment la courbe d'apprentissage des frameworks PHP se compare-t-elle à celle d'autres frameworks de langage ? Jun 06, 2024 pm 12:41 PM

La courbe d'apprentissage d'un framework PHP dépend de la maîtrise du langage, de la complexité du framework, de la qualité de la documentation et du support de la communauté. La courbe d'apprentissage des frameworks PHP est plus élevée par rapport aux frameworks Python et inférieure par rapport aux frameworks Ruby. Par rapport aux frameworks Java, les frameworks PHP ont une courbe d'apprentissage modérée mais un temps de démarrage plus court.

Bonnes pratiques en matière de documentation du framework Golang Bonnes pratiques en matière de documentation du framework Golang Jun 04, 2024 pm 05:00 PM

La rédaction d'une documentation claire et complète est cruciale pour le framework Golang. Les meilleures pratiques incluent le respect d'un style de documentation établi, tel que le Go Coding Style Guide de Google. Utilisez une structure organisationnelle claire, comprenant des titres, des sous-titres et des listes, et fournissez la navigation. Fournit des informations complètes et précises, notamment des guides de démarrage, des références API et des concepts. Utilisez des exemples de code pour illustrer les concepts et l'utilisation. Maintenez la documentation à jour, suivez les modifications et documentez les nouvelles fonctionnalités. Fournir une assistance et des ressources communautaires telles que des problèmes et des forums GitHub. Créez des exemples pratiques, tels que la documentation API.

Comparaison des performances des frameworks Java Comparaison des performances des frameworks Java Jun 04, 2024 pm 03:56 PM

Selon les benchmarks, pour les petites applications hautes performances, Quarkus (démarrage rapide, mémoire faible) ou Micronaut (TechEmpower excellent) sont des choix idéaux. SpringBoot convient aux grandes applications full-stack, mais a des temps de démarrage et une utilisation de la mémoire légèrement plus lents.

Comment choisir le meilleur framework Golang pour différents scénarios d'application Comment choisir le meilleur framework Golang pour différents scénarios d'application Jun 05, 2024 pm 04:05 PM

Choisissez le meilleur framework Go en fonction des scénarios d'application : tenez compte du type d'application, des fonctionnalités du langage, des exigences de performances et de l'écosystème. Frameworks Go courants : Gin (application Web), Echo (service Web), Fibre (haut débit), gorm (ORM), fasthttp (vitesse). Cas pratique : construction de l'API REST (Fiber) et interaction avec la base de données (gorm). Choisissez un framework : choisissez fasthttp pour les performances clés, Gin/Echo pour les applications Web flexibles et gorm pour l'interaction avec la base de données.

Explication pratique détaillée du développement du framework Golang : questions et réponses Explication pratique détaillée du développement du framework Golang : questions et réponses Jun 06, 2024 am 10:57 AM

Dans le développement du framework Go, les défis courants et leurs solutions sont les suivants : Gestion des erreurs : utilisez le package d'erreurs pour la gestion et utilisez un middleware pour gérer les erreurs de manière centralisée. Authentification et autorisation : intégrez des bibliothèques tierces et créez un middleware personnalisé pour vérifier les informations d'identification. Traitement simultané : utilisez des goroutines, des mutex et des canaux pour contrôler l'accès aux ressources. Tests unitaires : utilisez les packages, les simulations et les stubs gotest pour l'isolation, ainsi que les outils de couverture de code pour garantir la suffisance. Déploiement et surveillance : utilisez les conteneurs Docker pour regrouper les déploiements, configurer les sauvegardes de données et suivre les performances et les erreurs avec des outils de journalisation et de surveillance.

See all articles