Zbuduj prosty, ale skuteczny program do przesyłania obrazów, korzystając z tego samouczka w języku Python.
Jedną z najbardziej atrakcyjnych cech nowoczesnej aplikacji jest możliwość umieszczania obrazów. Obrazy, takie jak obrazy, ilustracje i animacje, nadają aplikacjom atrakcyjność wizualną.
Chociaż obrazy są ważne, mogą spowolnić aplikację i zwiększyć zagrożenia bezpieczeństwa bazy danych.
W przypadku aplikacji opartych na Django przesyłanie obrazów jest łatwe i bezpieczne. Django ma wyspecjalizowaną funkcję, która umożliwia przesyłanie obrazów.
Nauczmy się, jak przesyłać obrazy do aplikacji Django bez narażania bezpieczeństwa.
Czego potrzebujesz
Zanim zaczniesz przesyłać obrazy, upewnij się, że spełniasz następujące wymagania:
- Zainstaluj Pythona
- Zainstaluj Pipa
- zainstalować Pipenv (możesz również użyć venv, jeśli chcesz)
- Zainstaluj Django
- Masz istniejącą aplikację Django, która potrzebuje obrazów
Teraz, gdy masz już niezbędne zależności, zacznijmy.
1. Zainstaluj poduszkę
Django ma Pole obrazu
w swoich modelach. Pole przechowuje przesłane obrazy w określonej lokalizacji w systemie plików, a nie w bazie danych. Poduszka to biblioteka Pythona, która sprawdza obrazy w ImageField.Żeby zainstalować poduszka użyj poniższego polecenia:
pipenv install pillow
Jeśli używasz venv, zamiast tego użyj tego polecenia
pip install pillow
2. Utwórz model
Stworzyć Pole obrazu odnośnik w bazie danych. Następnie dodaj przesłać do Argument w modelu. Argument definiuje miejsce przechowywania w systemie plików.
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 końcu pomaga przekonwertować dane na ciągi znaków.
Następnie przeprowadź migrację i zatwierdź nowe zmiany w bazie danych. Następnie musisz edytować ustawienia projektu.
Przejdź do ustawień projektu. Pod nagłówkiem # Pliki statyczne (CSS, JavaScript, Obrazy), dodaj adres URL multimediów.
# 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')
Dodanie adresów URL multimediów do ustawień definiuje określoną trasę wyświetlania przesłanych obrazów. Plik multimedialny przechowuje obrazy aplikacji. Ścieżka będzie wyglądać następująco: 127.0.0.1:8000/media/profil/obraz.jpg
Zaktualizuj SZABLONY array w ustawieniach projektu. Dodać django.template.context_processors.media do tablicy szablonów.
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'
],
},
},
]
Ustawienie nośników procesorów pomaga załadować przesłane obrazy do szablonów aplikacji.
Następnie musisz dodać MEDIA_ROOT trasa do adresów URL aplikacji. Pomoże to załadować przesłane obrazy na serwer deweloperski.
Najpierw zaimportuj ustawienia projektu z pliku django.conf moduł i A funkcja statyczna. Następnie dodaj do wzorce adresów URL trasa statyczna pokazująca lokalizację przesłanych plików.
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. Przetestuj przesyłanie obrazów
Następnie uruchom serwer:
python manage.py runserver
Jeśli nie ma błędów, przejdź do panelu administracyjnego Django, dodając trasę administracyjną do podstawowego adresu URL, http://127.0.0.1:8000/admin.
Wewnątrz panelu administracyjnego, po kliknięciu modelu Profile, zobaczysz dodane pole obrazu na dole.
Po przesłaniu obrazu zobaczysz nowy folder utworzony w folderze aplikacji o nazwie głoska bezdźwięczna. Po otwarciu folderu zobaczysz obraz, który przesłałeś za pośrednictwem panelu administracyjnego.
6. Wyświetl przesłany obraz
Należy zaktualizować szablon profilu, aby wyświetlał obraz profilu.
Dodasz an img tag i wypełnij go zdjęcie profilowe atrybut. The Pole obrazu ma atrybut adresu URL, który zapewnia bezwzględny adres URL pliku. Możesz określić kształt i wygląd obrazu za pomocą klas CSS.
{% 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 %}
Możesz uruchomić serwer, aby załadować obraz. Następnie sprawdź szablon w przeglądarce, aby zobaczyć wyświetlany obraz.
Jak przesyłać obrazy w aplikacji Django
Django ułatwia przesyłanie obrazów w aplikacjach. Django ma wyspecjalizowane pole w swoich modelach, które dodaje i sprawdza typ pliku przed przesłaniem.
ImageField zapewnia bezwzględną ścieżkę do systemu plików do przechowywania obrazów. Przechowywanie obrazów w systemie plików zwiększa szybkość aplikacji i zapewnia, że baza danych nie jest infiltrowana szkodliwymi plikami.