S to vadnico za Python zgradite preprost, a učinkovit program za nalaganje slik.
Ena najbolj privlačnih lastnosti sodobne aplikacije je njena sposobnost prilagajanja slik. Slike, kot so slike, ilustracije in animacije, dodajo aplikaciji vizualno privlačnost.
Čeprav so slike pomembne, lahko upočasnijo aplikacijo in povečajo varnostne grožnje zbirki podatkov.
Za aplikacije, zgrajene na Django, je nalaganje slik enostavno in varno. Django ima posebno funkcijo, ki omogoča nalaganje slik.
Naučimo se nalagati slike v aplikacijo Django brez ogrožanja varnosti.
Kaj rabiš
Preden začnete nalagati slike, se prepričajte, da izpolnjujete naslednje zahteve:
- Namestite Python
- Namestite Pip
- Namestite Pipenv (če želite, lahko uporabite tudi venv)
- Namestite Django
- Imate obstoječo aplikacijo Django, ki potrebuje slike
Zdaj, ko imate potrebne odvisnosti, začnimo.
1. Namestite blazino
Django ima ImageField v svojih modelih. Polje shranjuje naložene slike na določeno mesto v datotečnem sistemu in ne v zbirki podatkov. Blazina je knjižnica Python, ki preverja slike v ImageField.
Za namestitev blazina uporabite spodnji ukaz:
pipenv install pillow
Če uporabljate venv, namesto tega uporabite ta ukaz
pip install pillow
2. Ustvari model
Ustvarite ImageField referenca v bazi podatkov. Nato dodajte upload_to argument v modelu. Argument definira mesto shranjevanja v datotečnem sistemu.
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 koncu pomaga pretvoriti podatke v nize.
Nato preselite in potrdite nove spremembe v bazi podatkov. Nato morate urediti nastavitve projekta.
Pomaknite se do nastavitve projekta. Pod naslovom # Statične 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')
Če v nastavitve dodate naslove URL medijev, določite posebno pot za prikaz naloženih slik. Predstavnostna datoteka shranjuje slike aplikacije. Pot bo videti takole: 127.0.0.1:8000/media/profile/image.jpg
Posodobite PREDLOGE polje v nastavitvah projekta. Dodaj django.template.context_processors.media v niz predlog.
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'
],
},
},
]
Medijska nastavitev procesorja pomaga naložiti naložene slike v predloge aplikacije.
Nato morate dodati MEDIA_ROOT pot do URL-jev aplikacije. To bo pomagalo naložiti naložene slike v razvojni strežnik.
Najprej uvozite nastavitve projekta iz django.conf modul in a statična funkcija. Nato dodajte v urlpatterns statična pot, ki prikazuje lokacijo naloženih datotek.
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. Test nalaganja slik
Nato zaženite strežnik:
python manage.py runserver
Če ni napak, se pomaknite do skrbniške plošče Django tako, da osnovnemu URL-ju dodate skrbniško pot, http://127.0.0.1:8000/admin.
Ko v skrbniški plošči kliknete model Profile, boste na dnu videli dodano slikovno polje.
Ko naložite sliko, boste videli novo mapo, ustvarjeno v mapi aplikacije mediji. Ko odprete mapo, boste videli sliko, ki ste jo naložili prek skrbniške plošče.
6. Prikaži naloženo sliko
Za prikaz slike profila morate posodobiti predlogo profila.
Dodali boste img označite in jo zapolnite z profilna slika atribut. The ImageField ima atribut URL, ki zagotavlja absolutni URL do datoteke. Z razredi CSS lahko določite obliko in videz 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 %}
Za nalaganje slike lahko zaženete strežnik. Nato preverite predlogo v brskalniku, da vidite prikazano sliko.
Kako naložiti slike v aplikacijo Django
Django olajša nalaganje slik v vaše aplikacije. Django ima na svojih modelih specializirano polje, ki doda in preveri vrsto datoteke pred nalaganjem.
ImageField zagotavlja absolutno pot do datotečnega sistema za shranjevanje slik. Shranjevanje slik v datotečnem sistemu poveča hitrost aplikacije in zagotovi, da baza podatkov ni infiltrirana s škodljivimi datotekami.