网站不提供媒体文件,但正确提供静态文件

时间:2016-06-08 13:40:31

标签: python django apache

我正在制作一个Django网站。静态文件正常运行,但无法检索媒体文件。

我的setting.py:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
MEDIA_URL = "media/"

我尝试使用"/media/""media/"时,使用.url属性时,HTML中的第一个网址显示不正确。

我的Apache配置:

Alias /static/ /var/www/MySite/static/
<Directory /var/www/MySite/static>
    Require all granted
</Directory>

Alias /media/ /var/www/MySite/media/
<Directory /var/www/MySite/media>
    Require all granted
</Directory>

在视图中,我检索如下:

{% for photo in photos %}
        <div class="col-md-3 photo-wrapper">
            <img src="{{ photo.image.url }}"/>
        </div>
{% endfor %}

和网址生成为http://mysite.co.za/media/profile_photos/photo.png

文件会上传,因为我可以在VPS服务器上看到它们,但是当检索文件失败时,会丢失404.

它在调试模式下工作,因为我在urls.py中有以下内容

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

但是当调试模式关闭时,这不起作用。我将如何提供这些媒体文件?

1 个答案:

答案 0 :(得分:1)

您确定/var/www/MySite/media是您的媒体目录吗?

也许您将静态文件(由collectstatic命令收集)与媒体文件混淆,媒体文件由webapp用户保存。

查看您的设置,我相信您的apache配置应该可用 PROJECT_ROOT + '/media'

或者,您更改​​了设置文件,以便MEDIA_ROOT = /var/www/MySite/media