python - Django 在 openshift 中提供媒体文件(用户上传的文件)

标签 python django openshift django-media

我已经在 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/

相关文章:

python - Pandas 日期时间表示的转换

python - 对列表理解的每个生成实体进行操作

python-3.x - 从 python 请求上传时,Django 文件对象始终为 0 字节

mysql - SQLSTATE[HY000] [2002] php_network_getaddresses : getaddrinfo failed: Name or service not known

python - 不同的字典共享同一个实例

Python datetime 和 pandas 为同一日期提供不同的时间戳

python - Django 数据库名称 'connection' 未定义

python - Django 模型表单集在 POST 上非常慢

node.js - Travis + Openshift 未部署到 openshift

Git 完全重置。删除所有文件。删除历史记录