Vytvorte si jednoduchý, ale efektívny nástroj na nahrávanie obrázkov pomocou tohto tutoriálu Python.

Jednou z najatraktívnejších funkcií modernej aplikácie je jej schopnosť prispôsobiť obrázky. Obrázky, ako sú obrázky, ilustrácie a animácie, dodávajú aplikácii vizuálnu príťažlivosť.

Aj keď sú obrázky dôležité, môžu spomaliť aplikáciu a zvýšiť bezpečnostné hrozby pre databázu.

Pre aplikácie postavené na Django je nahrávanie obrázkov jednoduché a bezpečné. Django má špecializovanú funkciu, ktorá umožňuje nahrávanie obrázkov.

Poďme sa naučiť, ako nahrať obrázky do aplikácie Django bez ohrozenia bezpečnosti.

Čo potrebuješ

Skôr ako začnete odovzdávať obrázky, uistite sa, že máte nasledujúce požiadavky:

  • Nainštalujte Python
  • Nainštalujte Pip
  • Inštalácia Pipenv (ak chcete, môžete použiť aj venv)
  • Nainštalujte Django
  • Máte existujúcu aplikáciu Django, ktorá potrebuje obrázky

Teraz, keď máte potrebné závislosti, začnime.

1. Nainštalujte vankúš

Django má ImageField vo svojich modeloch. Pole ukladá nahrané obrázky na určené miesto v systéme súborov, nie do databázy.

instagram viewer
Vankúš je knižnica Pythonu, ktorá kontroluje obrázky v poli ImageField.

Inštalovať vankúš použite príkaz nižšie:

pipenv install pillow

Ak používate venv, použite namiesto toho tento príkaz

pip install pillow

2. Vytvorenie modelu

Vytvorte ImageField odkaz v databáze. Potom pridajte upload_to argument v modeli. Argument definuje miesto uloženia v súborovom systéme.

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'

Metóda na konci pomáha konvertovať údaje na reťazce.

Potom migrujte a potvrďte nové zmeny v databáze. Potom musíte upraviť nastavenia projektu.

Prejdite na nastavenie projektu. Pod nadpisom # Statické súbory (CSS, JavaScript, obrázky), pridajte adresu URL 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')

Pridanie adries URL médií do nastavení definuje špecifickú cestu na zobrazenie nahratých obrázkov. V mediálnom súbore sú uložené obrázky aplikácie. Cesta bude vyzerať takto: 127.0.0.1:8000/media/profile/image.jpg

Aktualizujte ŠABLÓNY pole v nastaveniach projektu. Pridať django.template.context_processors.media do poľa šablón.

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'
],
},
},
]

Nastavenie médií procesorov pomáha načítať nahrané obrázky do šablón aplikácií.

Ďalej je potrebné pridať MEDIA_ROOT smerovať na adresy URL aplikácie. Pomôže to načítať nahrané obrázky na vývojový server.

Najprv importujte nastavenia projektu z django.conf modul a a statická funkcia. Potom pridajte do vzory url statická trasa zobrazujúca umiestnenie nahraných súborov.

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. Testovať nahrávanie obrázkov

Ďalej spustite server:

python manage.py runserver

Ak sa nevyskytnú žiadne chyby, prejdite na panel správcu Django pridaním trasy správcu k základnej adrese URL, http://127.0.0.1:8000/admin.

Po kliknutí na model profilu vo vnútri panela správcu uvidíte v spodnej časti pridané pole obrázka.

Keď nahráte obrázok, uvidíte nový priečinok vytvorený v priečinku aplikácie s názvom médiá. Keď otvoríte priečinok, uvidíte obrázok, ktorý ste nahrali cez admin panel.

6. Zobrazte nahraný obrázok

Mali by ste aktualizovať šablónu profilu, aby sa zobrazil obrázok profilu.

Pridáte an img a naplňte ju značkou profilový obrázok atribút. The ImageField má atribút URL, ktorý poskytuje absolútnu adresu URL súboru. Pomocou tried CSS môžete určiť tvar a vzhľad obrázka.

{% 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 %}

Na načítanie obrázka môžete spustiť server. Potom skontrolujte šablónu v prehliadači, aby ste videli zobrazený obrázok.

Ako nahrať obrázky do aplikácie Django

Django uľahčuje nahrávanie obrázkov do vašich aplikácií. Django má na svojich modeloch špecializované pole, ktoré pridáva a kontroluje typ súboru pred odovzdaním.

ImageField poskytuje absolútnu cestu k súborovému systému na uloženie obrázkov. Ukladanie obrázkov do súborového systému zvyšuje rýchlosť aplikácie a zabezpečuje, že databáza nie je infiltrovaná škodlivými súbormi.