Creați un instrument de încărcare de imagini simplu, dar eficient, cu acest tutorial Python.
Una dintre cele mai atrăgătoare caracteristici ale unei aplicații moderne este capacitatea sa de a găzdui imagini. Imaginile precum imaginile, ilustrațiile și animațiile aduc un aspect vizual unei aplicații.
Deși Imaginile sunt importante, ele pot încetini aplicația și pot crește amenințările de securitate la adresa bazei de date.
Pentru aplicațiile construite pe Django, încărcarea imaginilor este ușoară și sigură. Django are o caracteristică specializată care asigură încărcarea imaginilor.
Să învățăm cum să încărcăm imagini într-o aplicație Django fără a compromite securitatea.
De ce ai nevoie
Înainte de a începe să încărcați imagini, asigurați-vă că aveți următoarele cerințe:
- Instalați Python
- Instalați Pip
- Instalare Pipenv (puteți folosi și venv dacă doriți)
- Instalați Django
- Aveți o aplicație Django existentă care are nevoie de imagini
Acum că aveți dependențele necesare, să începem.
1. Instalați perna
Django are un ImageField în modelele sale. Câmpul stochează încărcările de imagini într-o locație specificată în sistemul de fișiere, nu în baza de date. Pernă este o bibliotecă Python care verifică imagini în ImageField.
A instala pernă utilizați comanda de mai jos:
pipenv install pillow
Dacă utilizați venv, utilizați în schimb această comandă
pip install pillow
2. Creați model
Creaza un ImageField referință în baza de date. Apoi, adăugați upload_to argument în model. Argumentul definește o locație de stocare în sistemul de fișiere.
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'
Metoda de la sfârșit ajută la convertirea datelor în șiruri de caractere.
Apoi, migrați și efectuați noile modificări în baza de date. Apoi, trebuie să editați setările proiectului.
Navigați la setarea proiectului. Sub titlul # Fișiere statice (CSS, JavaScript, imagini), adăugați adresa URL media.
# 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')
Adăugarea adreselor URL media la setări definește o rută specifică pentru afișarea imaginilor încărcate. Fișierul media stochează imaginile aplicației. Calea va arăta astfel: 127.0.0.1:8000/media/profile/image.jpg
Actualizați ȘABLONE matrice în setările proiectului. Adăuga django.template.context_processors.media la matrice de șabloane.
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'
],
},
},
]
Setarea media a procesoarelor ajută la încărcarea imaginilor încărcate în șabloanele de aplicație.
În continuare, trebuie să adăugați MEDIA_ROOT ruta către adresele URL ale aplicației. Acest lucru va ajuta la încărcarea imaginilor încărcate pe serverul de dezvoltare.
Mai întâi, importați setările proiectului din django.conf modul și a functie statica. Apoi, adăugați la urlpatterns o rută statică care arată locația fișierelor încărcate.
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. Testați încărcările de imagini
Apoi, rulați serverul:
python manage.py runserver
Dacă nu există erori, navigați la panoul de administrare Django adăugând o rută de administrare la adresa URL de bază, http://127.0.0.1:8000/admin.
În interiorul panoului de administrare, când dați clic pe modelul Profil, veți vedea un câmp de imagine adăugat în partea de jos.
Când încărcați o imagine, veți vedea un nou folder creat în folderul de aplicație numit mass-media. Când deschideți folderul, veți vedea imaginea pe care ați încărcat-o prin panoul de administrare.
6. Afișează imaginea încărcată
Ar trebui să actualizați șablonul de profil pentru a afișa imaginea de profil.
Veți adăuga un img etichetați și completați-l cu poză de profil atribut. The ImageField are un atribut URL care furnizează adresa URL absolută a fișierului. Puteți specifica forma și aspectul imaginii folosind clase 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 %}
Puteți rula serverul pentru a încărca imaginea. Apoi verificați șablonul în browser pentru a vedea imaginea afișată.
Cum să încărcați imagini într-o aplicație Django
Django facilitează încărcarea imaginilor în aplicațiile dvs. Django are un domeniu specializat pe modelele sale care adaugă și verifică tipul de fișier înainte de încărcare.
ImageField oferă o cale absolută către un sistem de fișiere pentru a stoca imaginile. Stocarea imaginilor într-un sistem de fișiere crește viteza aplicației și asigură că baza de date nu este infiltrată cu fișiere dăunătoare.