django - 无法将 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
,当我对写/读文件夹失去希望时,我这样做了。
解决方案
目前您正在上传到:
MEDIA_ROOT = (
os.path.join(BASE_DIR, 'media')
)
基本上意味着:
/path/to/project/media
在您的情况下,它应该是:
MEDIA_ROOT = '/mnt/data'
推荐阅读
- javascript - 如何删除类中的 eventListener?
- python - Pycharm不显示数据框
- graphql - 是否可以修改 graphql 输入模型以使用复合键而不是 id 来引用对象?
- xamarin - Xamarin Forms - 根据 Image 是否存在在控件上设置 IsVisible
- angular - Angular 4 中的 SetValue 控制 ngui-auto-complet
- swift - 如何快速将麦克风和 InApp Audio CMSampleBuffer 发送到 webRTC?
- x509certificate - 有没有人有一个在 Spring Cloud Gateway/Spring WebFlux 中实现 x509 相互身份验证的简单示例?
- android - UI 测试谷歌地图标记图标
- python - 使用不正确的 Python 可执行文件激活虚拟环境
- sql - SQL 中 COL_NAME 语句的错误答案