Créez un téléchargeur d'images simple mais efficace avec ce didacticiel Python.
L'une des caractéristiques les plus attrayantes d'une application moderne est sa capacité à accueillir des images. Des images telles que des images, des illustrations et des animations apportent un attrait visuel à une application.
Bien que les images soient importantes, elles peuvent ralentir l'application et augmenter les menaces de sécurité pour la base de données.
Pour les applications construites sur Django, le téléchargement d'images est simple et sécurisé. Django a une fonctionnalité spécialisée qui permet de télécharger des images.
Apprenons à télécharger des images vers une application Django sans compromettre la sécurité.
De quoi as-tu besoin
Avant de commencer à télécharger des images, assurez-vous que vous disposez des conditions suivantes :
- Installer Python
- Installer le pip
- Installer Pipenv (vous pouvez également utiliser venv si vous le souhaitez)
- Installer Django
- Vous avez une application Django existante qui a besoin d'images
Maintenant que vous avez les dépendances nécessaires, commençons.
1. Installer l'oreiller
Django a un ImageField dans ses modèles. Le champ stocke les téléchargements d'images à un emplacement spécifié dans le système de fichiers, et non dans la base de données. Oreiller est une bibliothèque Python qui vérifie les images dans ImageField.
À installer oreiller utilisez la commande ci-dessous :
pipenv install pillow
Si vous utilisez venv, utilisez plutôt cette commande
pip install pillow
2. Créer un modèle
Créé un ImageField référence dans la base de données. Ensuite, ajoutez le upload_to argument dans le modèle. L'argument définit un emplacement de stockage dans le système de fichiers.
classProfile(models.Model):
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = models.ImageField(upload_to='photos/')
def__str__(self):
returnf'{self.user.username} profile'
La méthode à la fin aide à convertir les données en chaînes.
Ensuite, migrez et validez les nouvelles modifications dans la base de données. Ensuite, vous devez modifier les paramètres du projet.
Accédez au paramètre du projet. Sous le titre # Fichiers statiques (CSS, JavaScript, Images), ajoutez l'URL du média.
# https://docs.djangoproject.com/en/4.0/howto/static-files/
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
# STATICFILES_STORAGE =
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
L'ajout d'URL multimédias aux paramètres définit un itinéraire spécifique pour afficher les images téléchargées. Le fichier multimédia stocke les images de l'application. Le chemin ressemblera à ceci: 127.0.0.1:8000/media/profil/image.jpg
Mettre à jour le MODÈLES tableau dans les paramètres du projet. Ajouter django.template.context_processors.media au tableau de modèles.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.media'
],
},
},
]
Le paramètre multimédia des processeurs aide à charger les images téléchargées dans les modèles d'application.
Ensuite, vous devez ajouter le MEDIA_ROOT route vers les URL de l'application. Cela aidera à charger les images téléchargées sur le serveur de développement.
Tout d'abord, importez les paramètres du projet à partir du django.conf modules et un fonction statique. Ensuite, ajoutez au modèles d'url une route statique indiquant l'emplacement des fichiers téléchargés.
from django.urls import path
from. import views
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
path('', views.index, name = 'index'),
path('profile', views.profile, name='profile'),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
5. Tester les téléchargements d'images
Ensuite, lancez le serveur :
python manage.py runserver
S'il n'y a pas d'erreurs, accédez au panneau d'administration de Django en ajoutant une route d'administration à l'URL de base, http://127.0.0.1:8000/admin.
Dans le panneau d'administration, lorsque vous cliquez sur le modèle de profil, vous verrez un champ d'image ajouté en bas.
Lorsque vous téléchargez une image, vous verrez un nouveau dossier créé dans le dossier de l'application appelé médias. Lorsque vous ouvrez le dossier, vous verrez l'image que vous avez téléchargée via le panneau d'administration.
6. Afficher l'image téléchargée
Vous devez mettre à jour le modèle de profil pour afficher l'image du profil.
Vous ajouterez un image tag et remplissez-le avec le image de profil attribut. Le ImageField possède un attribut URL qui fournit l'URL absolue du fichier. Vous pouvez spécifier la forme et l'apparence de l'image à l'aide de classes CSS.
{% extends "base.html" %}
{% load static %}
{% block content %}
<divclass="card mb-3 bg-whitesmoke"style="max-width: fit content;">
<divclass="row g-0">
<divclass="col-md-4">
<imgsrc="{{user.profile.profile_picture.url}}"width="100px"alt="profile pic"class="mx-auto d-block rounded-circle" />
div>
div>
div>
{% endblock %}
Vous pouvez exécuter le serveur pour charger l'image. Vérifiez ensuite le modèle sur le navigateur pour voir l'image affichée.
Comment télécharger des images dans une application Django
Django facilite le téléchargement d'images dans vos applications. Django a un champ spécialisé sur ses modèles qui ajoute et vérifie le type de fichier avant le téléchargement.
L'ImageField fournit un chemin absolu vers un système de fichiers pour stocker les images. Le stockage des images dans un système de fichiers augmente la vitesse de l'application et garantit que la base de données n'est pas infiltrée de fichiers nuisibles.