Django - Загруженные изображения не найдены в производстве

У меня проблема с загрузкой изображений в production в моем Django проекте.

Я конвертирую canvas в png, затем загружаю их в hidden input, затем сохраняю в базе данных в представлениях.

В разработке он работает как ожидалось, но в производстве я получаю 404 изображения не найдено.

Структура папки

website/
|
|- core/
|    |- settings.py
|    |- urls.py
|    ...
|
|- management/
|    |- models.py
|    ...
|
|- static/
|   |- images/
|      |- uploads/
|         |- sketch/
|          ...
|    ...
|
|- manage.py
|- media/
|   |- uploads/
|      |- sketch/
|        ...

settings.py

STATIC_URL = '/static/'

MEDIA_URL = '/media/'

STATICFILES_DIRS = [
    BASE_DIR / 'static',
]

MEDIA_ROOT = BASE_DIR / 'media'

STATIC_ROOT = BASE_DIR / 'staticfiles'

models.py

class OrderSketch(models.Model):
    img = models.ImageField(upload_to='uploads/sketch/')

    def __str__(self):
        return f'Sketch - {self.order.id}'

index.html

<div class="sketch-gallery">
    {% for sketch in order.ordersketch_set.all %}
        <img class="gallery-image {% if forloop.first %}active{% endif %}" src="{{ sketch.img.url }}" alt="Order Sketch {{ forloop.counter }}">
    {% endfor %}
</div>

urls.py

from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', include('base.urls')),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

views.py

if request.POST.getlist('sketch_images[]'):
    for image_data in request.POST.getlist('sketch_images[]'):
        format, imgstr = image_data.split(';base64,')
        ext = format.split('/')[1]  # Extract file extension from format (e.g., 'png' from 'image/png')
        img_file = ContentFile(base64.b64decode(imgstr), name=f'temp.{ext}')
        
        # Save the image to the database
        order_sketch = OrderSketch(order=order, img=img_file)
        order_sketch.save()

Примечание: мой сайт размещен в Microsoft Azure

Вернуться на верх