django - 有一些问题服务于static_url文件,但media_url工作正常

时间:2015-05-14 10:44:19

标签: django python-2.7 django-templates static-files

我的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)
在settings.py

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'),
)

我在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"

文件夹设置为

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

root\static\static_root\img\placeholder.svg

in html

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

1 个答案:

答案 0 :(得分:0)

STATIC_ROOT仅用于非DEBUG环境,您应该让您的网络服务器找出静态文件在生产中的位置,并使用collectstatic管理命令相应地收集文件,这是一个apache示例

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

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

n.b。没有必要使用静态标记

在模板中使用前缀

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