无法将 Django 生产中的媒体文件上传到外部文件夹
Cannot upload media files in Django production to external folder
我的 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/
上的media文件夹是chmod 777
,是我在writing/reading文件夹里没希望的时候做的
目前您正在上传到:
MEDIA_ROOT = (
os.path.join(BASE_DIR, 'media')
)
基本意思是:
/path/to/project/media
在你的情况下应该是:
MEDIA_ROOT = '/mnt/data'
终于想通了,Debendera的路径是对的,但是Nginx配置错了。我将其更改为:
location /media/ {
alias /mnt/data/;
}
然后就成功了。如果我没记错的话,最好使用别名而不是 root。
这是我的参考:Nginx -- static file serving confusion with root & alias
我的 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/
上的media文件夹是chmod 777
,是我在writing/reading文件夹里没希望的时候做的
目前您正在上传到:
MEDIA_ROOT = (
os.path.join(BASE_DIR, 'media')
)
基本意思是:
/path/to/project/media
在你的情况下应该是:
MEDIA_ROOT = '/mnt/data'
终于想通了,Debendera的路径是对的,但是Nginx配置错了。我将其更改为:
location /media/ {
alias /mnt/data/;
}
然后就成功了。如果我没记错的话,最好使用别名而不是 root。 这是我的参考:Nginx -- static file serving confusion with root & alias