Izgradite jednostavan, ali učinkovit program za učitavanje slika pomoću ovog vodiča za Python.
Jedna od najprivlačnijih značajki moderne aplikacije je njezina sposobnost prilagodbe slika. Slike kao što su slike, ilustracije i animacije donose vizualnu privlačnost aplikaciji.
Iako su slike važne, one mogu usporiti aplikaciju i povećati sigurnosne prijetnje bazi podataka.
Za aplikacije izgrađene na Djangu, učitavanje slika je jednostavno i sigurno. Django ima specijaliziranu značajku koja omogućuje učitavanje slika.
Naučimo kako prenijeti slike u Django aplikaciju bez ugrožavanja sigurnosti.
Što trebaš
Prije nego počnete učitavati slike, provjerite ispunjavate li sljedeće zahtjeve:
- Instalirajte Python
- Instalirajte Pip
- Instalirati Pipenv (možete koristiti i venv ako želite)
- Instalirajte Django
- Imate postojeću Django aplikaciju kojoj su potrebne slike
Sada kada imate potrebne ovisnosti, počnimo.
1. Ugradite jastuk
Django ima ImageField u svojim modelima. Polje pohranjuje učitane slike na određeno mjesto u datotečnom sustavu, a ne u bazi podataka.
Jastuk je Python biblioteka koja provjerava slike u ImageFieldu.Instalirati jastuk koristite naredbu ispod:
pipenv install pillow
Ako koristite venv, umjesto toga koristite ovu naredbu
pip install pillow
2. Stvori model
Stvorite ImageField referenca u bazi podataka. Zatim dodajte upload_to argument u modelu. Argument definira mjesto pohrane u datotečnom sustavu.
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 na kraju pomaže pretvoriti podatke u nizove.
Zatim migrirajte i unesite nove promjene u bazu podataka. Zatim morate urediti postavke projekta.
Dođite do postavke projekta. Pod naslovom # Statičke datoteke (CSS, JavaScript, slike), dodajte URL medija.
# 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')
Dodavanje URL-ova medija u postavke definira određeni put za prikaz učitanih slika. Medijska datoteka pohranjuje slike aplikacije. Put će izgledati ovako: 127.0.0.1:8000/media/profile/image.jpg
Ažurirajte PREDLOŠCI niz u postavkama projekta. Dodati django.template.context_processors.media u niz predložaka.
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'
],
},
},
]
Postavka medija procesora pomaže pri učitavanju prenesenih slika u predloške aplikacije.
Zatim morate dodati MEDIJ_ROOT ruta do URL-ova aplikacije. To će pomoći pri učitavanju učitanih slika na razvojni poslužitelj.
Prvo uvezite postavke projekta iz django.conf modul i a statička funkcija. Zatim dodajte u url uzorci statična ruta koja prikazuje lokaciju učitanih datoteka.
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. Testirajte učitavanje slika
Zatim pokrenite poslužitelj:
python manage.py runserver
Ako nema pogrešaka, idite na Django administratorsku ploču dodavanjem administratorske rute u osnovni URL, http://127.0.0.1:8000/admin.
Unutar administratorske ploče, kada kliknete na model Profile, vidjet ćete polje slike dodano na dnu.
Kada učitate sliku, vidjet ćete novu mapu stvorenu u mapi aplikacije pod nazivom medijima. Kada otvorite mapu, vidjet ćete sliku koju ste učitali putem administratorske ploče.
6. Prikaži učitanu sliku
Trebali biste ažurirati predložak profila za prikaz slike profila.
Dodat ćete img označite i popunite ga s profilna slika atribut. The ImageField ima URL atribut koji daje apsolutni URL datoteke. Pomoću CSS klasa možete odrediti oblik i izgled slike.
{% 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 %}
Možete pokrenuti poslužitelj za učitavanje slike. Zatim provjerite predložak u pregledniku da vidite prikazanu sliku.
Kako učitati slike u Django aplikaciju
Django olakšava učitavanje slika u vaše aplikacije. Django ima specijalizirano polje na svojim modelima koje dodaje i provjerava vrstu datoteke prije učitavanja.
ImageField pruža apsolutni put do datotečnog sustava za pohranu slika. Pohranjivanje slika u sustav datoteka povećava brzinu aplikacije i osigurava da baza podataka nije infiltrirana štetnim datotekama.