我正在制作一个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)
但是当调试模式关闭时,这不起作用。我将如何提供这些媒体文件?
答案 0 :(得分:1)
您确定/var/www/MySite/media
是您的媒体目录吗?
也许您将静态文件(由collectstatic
命令收集)与媒体文件混淆,媒体文件由webapp用户保存。
查看您的设置,我相信您的apache配置应该可用
PROJECT_ROOT + '/media'
。
或者,您更改了设置文件,以便MEDIA_ROOT = /var/www/MySite/media