@aaron_armstrong
Для загрузки картинки в Django, вам потребуется выполнить следующие шаги:
- Установите библиотеку Pillow, которая является зависимостью Django для работы с изображениями:
- В вашем проекте Django создайте модель, которая будет содержать поле для загрузки изображения. Например, создайте модель Image в файле models.py:
1
2
3
4
|
from django.db import models
class Image(models.Model):
image = models.ImageField(upload_to='images/')
|
Здесь image
- это поле, которое будет хранить загруженное изображение. upload_to
указывает папку, куда будут сохраняться загруженные изображения.
- В файле settings.py вашего проекта Django добавьте следующую конфигурацию для обработки загруженных изображений:
1
2
|
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
где media
- это папка, в которой будут храниться загруженные изображения.
- Добавьте URL-шаблон для обслуживания файлов медиа в файл urls.py вашего проекта Django:
1
2
3
4
5
6
|
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
# ... другие URL-шаблоны
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
- Создайте форму для загрузки изображения, создав файл forms.py в вашем приложении Django:
1
2
3
4
5
6
7
|
from django import forms
from .models import Image
class ImageUploadForm(forms.ModelForm):
class Meta:
model = Image
fields = ['image']
|
- Создайте представление (view) для обработки загрузки изображения в файле views.py вашего приложения Django:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from django.shortcuts import render
from .forms import ImageUploadForm
def image_upload(request):
if request.method == 'POST':
form = ImageUploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('image_upload_success')
else:
form = ImageUploadForm()
return render(request, 'image_upload.html', {'form': form})
def image_upload_success(request):
return HttpResponse('Image uploaded successfully!')
|
- Создайте шаблон image_upload.html для отображения формы загрузки:
1
2
3
4
5
|
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
|
- Добавьте URL-шаблоны для представлений в файл urls.py вашего приложения Django:
1
2
3
4
5
6
7
|
from django.urls import path
from . import views
urlpatterns = [
path('image-upload/', views.image_upload, name='image_upload'),
path('image-upload/success/', views.image_upload_success, name='image_upload_success'),
]
|
Теперь, когда вы перейдете по URL-адресу /image-upload/
, вы увидите форму загрузки изображения. После загрузки изображения оно будет сохранено на сервере и вы будете перенаправлены на страницу /image-upload/success/
. Загруженные изображения будут храниться в папке media/images/
в вашем проекте Django.