Загрузка изображений в django
Я использую django уже некоторое время, но недавно заметил вот что. До этого я думал, что изображения в django, по умолчанию, загружаются по
путь, указанный в STATIC_URL, но я только что увидел, что в моем приложении поведение отличается. У меня это настроено в settings.py:
class BlogPost(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
category = models.CharField(max_length=50, choices=Categories.choices, default=Categories.medications)
title = models.CharField(max_length=50)
slug = models.SlugField()
image = ResizedImageField(upload_to='images/blog/', null=True, blank=True)
introduction = models.CharField(max_length=255)
body = models.TextField()
settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static',),
os.path.join(BASE_DIR, 'frontend/build/static'),
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
Каталоги static, staticfiles и media находятся в корневом каталоге. В моем приложении django, если каталог media отсутствует, то
изображения загружаются в каталог static. Однако, когда присутствуют и статическая, и медиа директории, предпочтение отдается директории media
(изображения загружаются в каталог media). Может я где-то допустил ошибку?
STATIC_ROOT использовался для хранения всех видов файлов, таких как JavaScript, CSS и медиафайлы. Бот теперь MEDIA_ROOT используется явно для изображений и других медиа. Именно туда следует помещать все медиафайлы, вы также можете создать дополнительные каталоги в MEDIA_ROOT, например, для каждой модели, которая у вас есть.
Подробнее о MEDIA_ROOT здесь