Направите једноставан, али ефикасан програм за отпремање слика помоћу овог водича за Питхон.
Једна од најпривлачнијих карактеристика модерне апликације је њена способност прилагођавања слика. Слике као што су слике, илустрације и анимације дају визуелну привлачност апликацији.
Иако су слике важне, оне могу успорити апликацију и повећати безбедносне претње бази података.
За апликације изграђене на Дјангу, отпремање слика је лако и безбедно. Дјанго има специјализовану функцију која омогућава отпремање слика.
Хајде да научимо како да отпремимо слике у Дјанго апликацију без угрожавања безбедности.
Шта вам је потребно
Пре него што почнете да отпремате слике, уверите се да имате следеће захтеве:
- Инсталирајте Питхон
- Инсталирајте Пип
- Инсталирај Пипенв (можете користити и венв ако желите)
- Инсталирајте Дјанго
- Имате постојећу Дјанго апликацију којој су потребне слике
Сада када имате потребне зависности, почнимо.
1. Инсталирајте јастук
Дјанго има ИмагеФиелд у својим моделима. Поље чува отпремљене слике на одређеној локацији у систему датотека, а не у бази података.
Јастук је Питхон библиотека која проверава слике у пољу ИмагеФиелд.За инсталацију јастук користите наредбу испод:
pipenv install pillow
Ако користите венв, користите ову наредбу
pip install pillow
2. Цреате Модел
Направите ан ИмагеФиелд референца у бази података. Затим додајте уплоад_то аргумент у моделу. Аргумент дефинише локацију за складиштење у систему датотека.
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'
Метод на крају помаже да се подаци конвертују у низове.
Затим мигрирајте и урезујте нове промене у базу података. Затим морате да измените подешавања пројекта.
Идите до подешавања пројекта. Под насловом # Статичке датотеке (ЦСС, ЈаваСцрипт, слике), додајте УРЛ медија.
# 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')
Додавање УРЛ-ова медија у подешавања дефинише одређену руту за приказивање отпремљених слика. Медијска датотека чува слике апликације. Пут ће изгледати овако: 127.0.0.1:8000/медиа/профиле/имаге.јпг
Ажурирајте ШАБЛОНИ низ у подешавањима пројекта. Додати дјанго.темплате.цонтект_процессорс.медиа на низ шаблона.
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'
],
},
},
]
Поставка медија процесора помаже да се отпремљене слике учитају у шаблоне апликације.
Затим морате додати МЕДИА_РООТ пут до УРЛ-ова апликације. Ово ће помоћи да се отпремљене слике учитају на развојни сервер.
Прво увезите поставке пројекта из дјанго.цонф модул и а статичка функција. Затим додајте у урлпаттернс статичка рута која приказује локацију отпремљених датотека.
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. Тестирајте отпремање слика
Затим покрените сервер:
python manage.py runserver
Ако нема грешака, идите до Дјанго административног панела додавањем административне руте основној УРЛ адреси, http://127.0.0.1:8000/admin.
Унутар административног панела, када кликнете на модел профила, видећете поље за слику додато на дну.
Када отпремите слику, видећете нову фасциклу креирану у фасцикли апликације која се зове медија. Када отворите фасциклу, видећете слику коју сте поставили преко административног панела.
6. Прикажите отпремљену слику
Требало би да ажурирате шаблон профила да бисте приказали слику профила.
Ви ћете додати ан имг означите и попуните је са профил_слика атрибут. Тхе ИмагеФиелд има УРЛ атрибут који даје апсолутну УРЛ адресу датотеке. Можете одредити облик и изглед слике користећи ЦСС класе.
{% 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 %}
Можете покренути сервер да бисте учитали слику. Затим проверите шаблон у претраживачу да бисте видели приказану слику.
Како да отпремите слике у Дјанго апликацију
Дјанго олакшава отпремање слика у ваше апликације. Дјанго има специјализовано поље на својим моделима које додаје и проверава тип датотеке пре отпремања.
ИмагеФиелд пружа апсолутну путању до система датотека за складиштење слика. Чување слика у систему датотека повећава брзину апликације и осигурава да база података није инфилтрирана штетним датотекама.