Невозможно загрузить медиа-файлы в Django production во внешнюю папку - PullRequest
0 голосов
/ 28 мая 2019

У меня проблема с моим рабочим сервером Django.Когда я пытаюсь загрузить изображения, они всегда идут в папку app/media/.Однако я хочу, чтобы они были загружены на /mnt/data.В панели администратора, когда я загружаю изображение, оно всегда загружается в папку app/media/.Я попытался настроить файл конфигурации Nginx и файл settings.py, но, думаю, я потерян.

Вот моя конфигурация Nginx:

     location /static/ {
            root /home/somthing/something/;
        }
        location /media/ {
        root /mnt/data/;
        }

и Settings.py:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

    # Media files

    MEDIA_URL = '/media/'

    MEDIA_ROOT = (
        os.path.join(BASE_DIR, 'media')
    )

и в моей модели я создаю образ следующим образом:

    pictures = models.ImageField(
            upload_to='postings/',
            verbose_name=_('Posting_picture'),
            blank=True, null=True,
            validators=[validate_image],
        )

Я полагаю, что после этой конфигурации загруженное изображение должно быть в mnt/data/media/postings.

Папка мультимедиа на mnt/data/ - chmod 777, я сделал это, когда потерял надежду на написание / чтение папки.

Ответы [ 2 ]

3 голосов
/ 28 мая 2019

В настоящее время вы загружаете в:

MEDIA_ROOT = (
    os.path.join(BASE_DIR, 'media')
)

В основном означает:

/path/to/project/media

В вашем случае это должно быть:

MEDIA_ROOT = '/mnt/data'
0 голосов
/ 29 мая 2019

Я наконец-то понял, что Debendera был верным путем, но конфигурация Nginx была неправильной. Я изменил это на:

location /media/ {
    alias /mnt/data/;
    }

и тогда это сработало. Если я не ошибаюсь, лучше было использовать псевдоним вместо root. Это моя ссылка: Nginx - статический файл, служащий путаницей с root & alias

...