2016-06-08 71 views
0

我目前有在我的网站上传图片的功能。所有图像正在正确上传,但是当我尝试在视图中使用image.url属性来显示它们时,它会给我一个404找不到的错误。活网站未找到图像文件

我相信这可能是我的Apache配置或Django settings.py。

在我的Apache配置下,我有:

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

在我的settings.py:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media') 
MEDIA_URL = 'media/' 

在我看来,我想如下显示图像:

{% 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 

但它没有找到图像。

我没有检查图像是否上传,并确实到了正确的位置。

而且我的模型进行澄清:

image = models.ImageField(upload_to='profile_photos') 

注:这是工作正常,当我在我的本地网站工作。

编辑:

所以,当我尝试不同的修复我搞砸了一些东西,使我改变了调试的settings.py为True,然后我看到实际上正在显示图像。我再次将调试更改为false,并且图像再次不显示。什么会导致dubug影响呢?

+0

是什么image.url的价值开始?它实际上是http://mysite.co.za/media/profile_photos/photo.png? –

+0

是的,完全如文章所示,但它找不到该网址 – Riaan

+0

如果您有权访问服务器,您是否验证过该文件实际存在? –

回答

0

的阿帕奇alias directive应该用/

Alias /media/ /var/www/MySite/media/ 
+0

我试过你的修复,但仍然没有工作,还检查我的编辑,一些新的东西出现了。 – Riaan

+0

从你的编辑我可以说'DEBUG = True'启用正确(但不安全)的路由,这就是为什么图像显示。不仅要将'Alias'设置为'/ media /',而且还要设置'MEDIA_URL ='/ media /''。这适用于我的项目。 – Nevertheless