我已经在 openshift 中成功部署了我的 Django 项目。但我需要能够提供用户上传的文件。我为此使用了 MEDIA_ROOT 和 MEDIA_URL。我关注了this教程在这里,但什么也没发生。我不得不更改 MEDIA_ROOT,因为我认为那个建议不正确。所以我的 MEDIA_ROOT 看起来像
MEDIA_ROOT = os.path.join(os.environ.get('OPENSHIFT_DATA_DIR', ''),'media')
MEDIA_URL = '/media/'
我在/wsgi 文件夹中添加了 .htaccess,如文章中所述
RewriteEngine On
RewriteRule ^application/media/(.+)$ /static/$1 [L]
并创建了构建脚本,如文章所述,以静态方式创建媒体的符号链接(symbolic link)。
#!/bin/bash
if [ ! -d $OPENSHIFT_DATA_DIR/media ]; then
mkdir $OPENSHIFT_DATA_DIR/media
fi
ln -sf $OPENSHIFT_DATA_DIR/media $OPENSHIFT_REPO_DIR/wsgi/static/media
在我的 urls.py 中添加了
urlpatterns += static(settings.MEDIA_ROOT, document_root=settings.MEDIA_URL)
但我还是不能为他们服务。我也尝试不在 urls.py 中包含 django 静态方法,但结果相同。
在another教程 .htacces 放在静态文件夹中。我做错了什么吗?
最佳答案
为了让其他人知道,我通过更正将媒体文件夹添加到规则的第二部分的 RewriteRule 解决了我的问题,所以它变成了
RewriteEngine On
RewriteRule ^application/media/(.+)$ /static/media/$1 [L]
希望对其他人有帮助。
关于python - Django 在 openshift 中提供媒体文件(用户上传的文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807969/