2016-06-08 111 views
0

我有一個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使用.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 %} 

和URL被作爲http://mysite.co.za/media/profile_photos/photo.png

生成的文件確實會上傳,我可以看到他們VPS服務器,但當檢索失敗時,拋出一個404找不到。

它的工作在調試模式,因爲我已經在我的urls.py

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

以下,但是當調試模式是關閉的,這並不工作。我將如何去服務這些媒體文件?

回答

1

您確定/var/www/MySite/media是您的媒體目錄嗎?

也許你會將靜態文件(由collectstatic命令收集)與Web應用程序的用戶保存的媒體文件混淆。

看着你的設置,我相信你的apache配置應該服務於 PROJECT_ROOT + '/media'

或者,你改變你的設置文件,這樣MEDIA_ROOT = /var/www/MySite/media

+0

,我的天哪,經過這麼多的麻煩,你是對的,我並沒有考慮過,你做一個collectstatic服務於靜態文件的事實,所以我的媒體文件是在我的靜態文件旁邊,而不是在我的根目錄中,Apache正在尋找它們。謝謝! – Riaan