Для того чтобы реализовать загрузку картинок в Django, нужно выполнить несколько шагов:
1. Настройка медиа-папки: создайте папку media в корневой директории вашего проекта (если она еще не создана). В файле настроек settings.py добавьте следующую строку:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2. Обработка загрузки в модели: в модели, к которой хотите добавить загрузку изображений, добавьте поле, объявленное с использованием класса models.ImageField:
from django.db import models class MyModel(models.Model): image = models.ImageField(upload_to='images/')
Поле upload_to указывает Django, в какую подпапку внутри media-папки сохранять загруженные изображения. В данном случае, изображения будут сохраняться в подпапку images.
3. Создание формы для загрузки: нужно создать форму, включающую поле для загрузки изображения.
from django import forms class MyModelForm(forms.ModelForm): class Meta: model = MyModel fields = ['image']
4. Создание представления: создайте представление для обработки загрузки изображения и сохранения его в модели MyModel.
from django.shortcuts import render, redirect from .forms import MyModelForm def upload_view(request): if request.method == 'POST': form = MyModelForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect('success') else: form = MyModelForm() return render(request, 'upload.html', {'form': form})
5. Создание шаблона: создайте шаблон с именем upload.html для отображения формы загрузки.
<form method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit">Upload</button> </form>
6. Настройка URL-маршрута: добавьте URL-маршрут, связывающий представление с шаблоном.
from django.urls import path from .views import upload_view urlpatterns = [ path('upload/', upload_view, name='upload'), ]
После выполнения этих шагов, вы сможете загружать изображения через представление upload_view и они будут сохраняться в папке media в соответствии с заданной структурой подпапок.