Python 2.7 -在提供static_url文件时出现一些问题,但media_url工作正常



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

在DEBUG &TEMPLATE_DEBUG设置为True。一旦设置为FALSE,我只能在网站上看到静态文件。

例如这个静态加载

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

但是这个媒体没有

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

文件夹设置如下

rootstaticmediafoodtrucklogobanner2.jpg
rootstaticstatic_rootimgplaceholder.svg
在html

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

STATIC_ROOT仅在非调试环境中使用,您应该让您的web服务器找出您的静态文件在生产中的位置,并使用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" %}

相关内容

  • 没有找到相关文章

最新更新