2015-05-14 60 views
0

我在settings.pyDjango的 - 有一些問題,供應static_url文件,但MEDIA_URL工程確定

STATIC_URL = '/static/' 

MEDIA_URL = '/media/' 

MEDIA_ROOT = os.path.join(BASE_DIR, "static", "media") 

STATIC_ROOT = os.path.join(BASE_DIR, "static", "static_root") 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static", "static_files"), 
) 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates'), 
) 

已經這在我的urls.py

if settings.DEBUG: 
handler404 = 'views.custom_404' 
handler500 = 'views.custom_500' 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

我在WSGI已經這一點。 PY

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ecommerce.settings") 

from django.core.wsgi import get_wsgi_application 
from whitenoise.django import DjangoWhiteNoise 

application = get_wsgi_application() 
application = DjangoWhiteNoise(application) 

Eveything在開發時DEBUG & TEMPLATE_DEBUG設置爲True時工作正常。一旦設置爲FALSE,我只能在網站上看到靜態文件。

例如這個靜態載荷

src="/static/img/placeholder.svg" 

但媒體並沒有

src="/media/foodtruck/logo/banner2.jpg" 

這些文件夾中的HTML設置爲這樣

root\static\media\foodtruck\logo\banner2.jpg 

root\static\static_root\img\placeholder.svg 

<img src="{{ MEDIA_URL }}{{ truck.logo }}"> 
<img src="{{ STATIC_URL }}img/placeholder.svg"> 

回答

0

STATIC_ROOT僅在非調試環境中使用,你應該讓你的網絡服務器找出你的靜態文件在生產和收集相應的使用collectstatic管理命令的文件,這裏是一個Apache的例子

Alias /static/ /var/www/example.com/static/ 

<Directory /var/www/example.com/static> 
    Options -Indexes 
    Order Deny,Allow 
</Directory> 

注:有沒有必要使用前綴在模板中使用靜態標籤

{% static "img/foo.jpg" %}

+0

感謝。靜態文件工作正常。我更關心媒體文件。它是如何得到服務而不是媒體的?我正在使用heroku。 –

相關問題