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