首页 > 解决方案 > 无法将 Django 制作中的媒体文件上传到外部文件夹

问题描述

我的 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,当我对写/读文件夹失去希望时,我这样做了。

标签: djangonginxdjango-media

解决方案


目前您正在上传到:

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

基本上意味着:

/path/to/project/media

在您的情况下,它应该是:

MEDIA_ROOT = '/mnt/data'

推荐阅读