Создайте простой, но эффективный загрузчик изображений с помощью этого руководства по Python.
Одной из наиболее привлекательных особенностей современного приложения является его способность размещать изображения. Такие изображения, как изображения, иллюстрации и анимация, делают приложение визуально привлекательным.
Хотя изображения важны, они могут замедлить работу приложения и увеличить угрозу безопасности базы данных.
Для приложений, созданных на Django, загрузка изображений проста и безопасна. В Django есть специальная функция, обеспечивающая загрузку изображений.
Давайте узнаем, как загружать изображения в приложение Django без ущерба для безопасности.
Что вам нужно
Прежде чем приступить к загрузке изображений, убедитесь, что у вас есть следующие требования:
- Установить Python
- Установить Пип
- Установить Пипенв (вы также можете использовать venv, если хотите)
- Установить Джанго
- У вас есть существующее приложение Django, которому нужны изображения.
Теперь, когда у вас есть необходимые зависимости, давайте начнем.
1. Установить подушку
У Джанго есть ImageField в своих моделях. Поле хранит загруженные изображения в указанное место в файловой системе, а не в базе данных. Подушка — это библиотека Python, которая проверяет изображения в ImageField.
Установить подушка используйте команду ниже:
pipenv install pillow
Если вы используете venv, используйте вместо этого эту команду
pip install pillow
2. Создать модель
Создать ImageField ссылка в базе. Затем добавьте загрузить на аргумент в модели. Аргумент определяет место хранения в файловой системе.
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'
Метод в конце помогает преобразовать данные в строки.
Затем выполните миграцию и зафиксируйте новые изменения в базе данных. Затем вам нужно отредактировать настройки проекта.
Перейдите к настройке проекта. Под заголовком # Статические файлы (CSS, JavaScript, изображения), добавьте 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')
Добавление URL-адресов мультимедиа в настройки определяет конкретный маршрут для отображения загруженных изображений. Медиафайл хранит изображения приложения. Путь будет выглядеть так: 127.0.0.1:8000/медиа/профиль/изображение.jpg
Обновите ШАБЛОНЫ массив в настройках проекта. Добавлять django.template.context_processors.media в массив шаблонов.
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'
],
},
},
]
Настройка мультимедиа процессоров помогает загружать загруженные изображения в шаблоны приложений.
Далее необходимо добавить MEDIA_ROOT маршрут к URL-адресам приложений. Это поможет загрузить загруженные изображения на сервер разработки.
Сначала импортируйте настройки проекта из django.conf модуль и статическая функция. Затем добавьте в URL-шаблоны статический маршрут, показывающий местоположение загруженных файлов.
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
Если ошибок нет, перейдите в панель администратора Django, добавив маршрут администратора к базовому URL-адресу, http://127.0.0.1:8000/admin.
Внутри панели администратора, когда вы нажимаете на модель профиля, вы увидите поле изображения, добавленное внизу.
Когда вы загружаете изображение, вы увидите новую папку, созданную в папке приложения, с именем СМИ. Когда вы откроете папку, вы увидите изображение, которое вы загрузили через панель администратора.
6. Показать загруженное изображение
Вам следует обновить шаблон профиля, чтобы отобразить изображение профиля.
Вы добавите изображение тег и заполните его изображение профиля атрибут. ImageField имеет атрибут URL, который предоставляет абсолютный URL-адрес файла. Вы можете указать форму и внешний вид изображения с помощью классов 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 %}
Вы можете запустить сервер для загрузки изображения. Затем проверьте шаблон в браузере, чтобы увидеть отображаемое изображение.
Как загрузить изображения в приложение Django
Django упрощает загрузку изображений в ваши приложения. Django имеет специальное поле в своих моделях, которое добавляет и проверяет тип файла перед загрузкой.
ImageField предоставляет абсолютный путь к файловой системе для хранения изображений. Хранение изображений в файловой системе увеличивает скорость работы приложения и гарантирует, что база данных не будет заражена вредоносными файлами.