Sukurkite paprastą, bet veiksmingą vaizdų įkėlimo programą naudodami šią „Python“ mokymo programą.

Viena patraukliausių šiuolaikinės programos savybių yra jos gebėjimas pritaikyti vaizdus. Vaizdai, tokie kaip paveikslėliai, iliustracijos ir animacijos, suteikia programai vizualinį patrauklumą.

Nors vaizdai yra svarbūs, jie gali sulėtinti programos veikimą ir padidinti duomenų bazės saugumo grėsmes.

Django sukurtoms programoms vaizdų įkėlimas yra paprastas ir saugus. „Django“ turi specializuotą funkciją, kuri užtikrina vaizdų įkėlimą.

Sužinokime, kaip įkelti vaizdus į „Django“ programą nepakenkiant saugumui.

Ko tau reikia

Prieš pradėdami įkelti vaizdus, ​​įsitikinkite, kad atitinkate šiuos reikalavimus:

  • Įdiekite Python
  • Įdiekite Pip
  • Diegti Pipenv (jei norite, taip pat galite naudoti venv)
  • Įdiekite Django
  • Turite „Django“ programą, kuriai reikia vaizdų

Dabar, kai turite reikiamas priklausomybes, pradėkime.

1. Įdiekite pagalvę

Django turi Vaizdo laukas savo modeliuose. Lauke vaizdo įkėlimai saugomi nurodytoje failų sistemos vietoje, o ne duomenų bazėje.

instagram viewer
Pagalvė yra „Python“ biblioteka, kuri tikrina, ar „ImageField“ yra vaizdų.

Instaliuoti pagalvė naudokite žemiau esančią komandą:

pipenv install pillow

Jei naudojate venv, naudokite šią komandą

pip install pillow

2. Sukurti modelį

Sukurti an Vaizdo laukas nuoroda duomenų bazėje. Tada pridėkite įkelti_į argumentas modelyje. Argumentas apibrėžia saugojimo vietą failų sistemoje.

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'

Pabaigoje esantis metodas padeda konvertuoti duomenis į eilutes.

Tada perkelkite ir atlikite naujus duomenų bazės pakeitimus. Tada turite redaguoti projekto nustatymus.

Eikite į projekto nustatymą. Po antrašte # Statiniai failai (CSS, JavaScript, vaizdai), pridėkite medijos URL.

# 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')

Pridėjus medijos URL prie nustatymų, nustatomas konkretus įkeltų vaizdų rodymo maršrutas. Medijos faile saugomi programos vaizdai. Kelias atrodys taip: 127.0.0.1:8000/media/profile/image.jpg

Atnaujinkite ŠABLONAI masyvas projekto nustatymuose. Papildyti django.template.context_processors.media į šablonų masyvą.

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

Procesorių medijos nustatymas padeda įkelti įkeltus vaizdus į programėlės šablonus.

Toliau turite pridėti MEDIA_ROOT maršrutą į programos URL. Tai padės įkelti įkeltus vaizdus į kūrimo serverį.

Pirmiausia importuokite projekto nustatymus iš django.conf modulis ir a statinė funkcija. Tada pridėkite prie url šablonai statinis maršrutas, rodantis įkeltų failų vietą.

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. Bandomasis vaizdų įkėlimas

Tada paleiskite serverį:

python manage.py runserver

Jei klaidų nėra, eikite į „Django“ administratoriaus skydelį, pridėdami administratoriaus maršrutą prie pagrindinio URL, http://127.0.0.1:8000/admin.

Administratoriaus skydelyje spustelėję profilio modelį pamatysite apačioje pridėtą vaizdo lauką.

Kai įkelsite vaizdą, pamatysite naują aplanką, sukurtą programos aplanke pavadinimu žiniasklaida. Atidarę aplanką pamatysite vaizdą, kurį įkėlėte per administratoriaus skydelį.

6. Rodyti įkeltą vaizdą

Turėtumėte atnaujinti profilio šabloną, kad būtų rodomas profilio vaizdas.

Jūs pridėsite an img žymą ir užpildykite ją Profilio nuotrauka atributas. The Vaizdo laukas turi URL atributą, kuris pateikia absoliutų failo URL. Galite nurodyti vaizdo formą ir išvaizdą naudodami CSS klases.

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

Norėdami įkelti vaizdą, galite paleisti serverį. Tada patikrinkite šabloną naršyklėje, kad pamatytumėte rodomą vaizdą.

Kaip įkelti vaizdus į „Django“ programą

„Django“ leidžia lengvai įkelti vaizdus į programas. „Django“ turi specializuotą savo modelių lauką, kuris prieš įkeldamas prideda ir tikrina failo tipą.

„ImageField“ suteikia absoliutų kelią į failų sistemą vaizdams saugoti. Vaizdų saugojimas failų sistemoje padidina programos greitį ir užtikrina, kad į duomenų bazę nebūtų įsiskverbę kenksmingi failai.