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.
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.