Izmantojot šo Python pamācību, izveidojiet vienkāršu, bet efektīvu attēlu augšupielādētāju.

Viena no modernās lietojumprogrammas pievilcīgākajām iezīmēm ir tās spēja pielāgot attēlus. Attēli, piemēram, attēli, ilustrācijas un animācijas, piešķir lietojumprogrammai vizuālu pievilcību.

Lai gan attēli ir svarīgi, tie var palēnināt lietotnes darbību un palielināt datubāzes drošības apdraudējumu.

Lietojumprogrammām, kas veidotas uz Django, attēlu augšupielāde ir vienkārša un droša. Django ir specializēta funkcija, kas nodrošina attēlu augšupielādi.

Uzzināsim, kā augšupielādēt attēlus Django lietotnē, neapdraudot drošību.

Ko tev vajag

Pirms sākat augšupielādēt attēlus, pārliecinieties, vai jums ir izpildītas šādas prasības:

  • Instalējiet Python
  • Instalējiet Pip
  • Uzstādīt Pipenv (ja vēlaties, varat izmantot arī venv)
  • Instalējiet Django
  • Jums ir Django lietotne, kurai nepieciešami attēli

Tagad, kad jums ir nepieciešamās atkarības, sāksim.

1. Uzstādiet spilvenu

Django ir Attēla lauks savos modeļos. Laukā attēlu augšupielādes tiek saglabātas noteiktā vietā failu sistēmā, nevis datu bāzē.

instagram viewer
Spilvens ir Python bibliotēka, kas pārbauda attēlu laukā ImageField.

Lai instalētu spilvens izmantojiet tālāk norādīto komandu:

pipenv install pillow

Ja izmantojat venv, izmantojiet šo komandu

pip install pillow

2. Izveidot modeli

Izveidojiet an Attēla lauks atsauce datu bāzē. Pēc tam pievienojiet augšupielādes_uz arguments modelī. Arguments nosaka glabāšanas vietu failu sistēmā.

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'

Beigās esošā metode palīdz pārvērst datus virknēs.

Pēc tam migrējiet un veiciet jaunās izmaiņas datu bāzē. Pēc tam jums ir jārediģē projekta iestatījumi.

Pārejiet uz projekta iestatījumu. Zem virsraksta # Statiskie faili (CSS, JavaScript, attēli), pievienojiet multivides 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')

Iestatījumos pievienojot multivides vietrāžus URL, tiek noteikts konkrēts maršruts augšupielādēto attēlu parādīšanai. Multivides fails saglabā lietotņu attēlus. Ceļš izskatīsies šādi: 127.0.0.1:8000/media/profile/image.jpg

Atjauniniet VEIDNES masīvs projekta iestatījumos. Pievienot django.template.context_processors.media uz veidņu masīvu.

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

Procesoru multivides iestatījums palīdz ielādēt augšupielādētos attēlus lietotņu veidnēs.

Tālāk jums jāpievieno MEDIA_ROOT maršruts uz lietotņu vietrāžiem URL. Tas palīdzēs ielādēt augšupielādētos attēlus izstrādes serverī.

Vispirms importējiet projekta iestatījumus no django.conf modulis un a statiskā funkcija. Pēc tam pievienojiet URL raksti statisks maršruts, kas parāda augšupielādēto failu atrašanās vietu.

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. Pārbaudiet attēlu augšupielādes

Pēc tam palaidiet serveri:

python manage.py runserver

Ja kļūdu nav, dodieties uz Django administratora paneli, pievienojot administratora maršrutu bāzes vietrādim URL, http://127.0.0.1:8000/admin.

Administratora panelī, noklikšķinot uz profila modeļa, apakšā tiks parādīts attēla lauks.

Augšupielādējot attēlu, programmas mapē ar nosaukumu tiks izveidota jauna mape plašsaziņas līdzekļi. Atverot mapi, jūs redzēsit attēlu, ko augšupielādējāt, izmantojot administratora paneli.

6. Parādiet augšupielādēto attēlu

Lai parādītu profila attēlu, jums ir jāatjaunina profila veidne.

Jūs pievienosit an img tagu un aizpildiet to ar profila bilde atribūts. The Attēla lauks ir URL atribūts, kas nodrošina faila absolūto URL. Izmantojot CSS klases, varat norādīt attēla formu un izskatu.

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

Lai ielādētu attēlu, varat palaist serveri. Pēc tam pārbaudiet veidni pārlūkprogrammā, lai redzētu parādīto attēlu.

Kā augšupielādēt attēlus lietotnē Django

Django atvieglo attēlu augšupielādi jūsu lietojumprogrammās. Django modeļos ir specializēts lauks, kas pirms augšupielādes pievieno un pārbauda faila tipu.

ImageField nodrošina absolūtu ceļu uz failu sistēmu, lai saglabātu attēlus. Attēlu glabāšana failu sistēmā palielina lietotnes ātrumu un nodrošina, ka datu bāzē netiek iefiltrēti kaitīgi faili.