Как заставить Django загружать файлы изображений профиля из каталога "media"
У меня есть каталог '/media/profile_image', в котором сохраняются изображения профиля, загруженные пользователями. В шаблоне я построил url, используя объект user
<img id="profile_image" src="{{ request.user.profile_image.url }}"></div>
что создает правильный url к нужной директории. Но изображение не отображается, почему так?
Работа с Django и медиафайлами при разработке выглядит следующим образом :
Сначала установите подушку
pip install pillowна ваш активированный env.Укажите переменную MEDIA_ROOT в файле настроек.
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')илиMEDIA_ROOT = BASE_DIR / 'media'вDjango 3.(Необязательно) Укажите также переменную MEDIA_URL. URL, который обрабатывает медиа, обслуживаемое с
MEDIA_ROOT.
Пример :
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media' # or os.path.join(BASE_DIR, 'media/') in Django 2
В вашей модели вы можете определить медиафайл следующим образом :
class Profile(models.Model):
    # Others fields
    photo = models.ImageField(upload_to="photos/")
Здесь upload_to используется для указания места, где изображения, назначенные атрибуту photo, будут сохранены на жестком диске для всех экземпляров модели. Если вы не укажете значение для upload_to, изображения будут сохранены в корень папки MEDIA_ROOT.