【问题标题】:django - having some issue serving static_url files, but media_url works okdjango - 在提供 static_url 文件时遇到一些问题,但 media_url 工作正常
【发布时间】:2023-03-12 14:25:01
【问题描述】:

我的 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)

在开发中,当 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

在html中

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

【问题讨论】:

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


    【解决方案1】:

    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" %}

    【讨论】:

    • 谢谢。静态文件工作正常。我更关心媒体文件。静态服务而不是媒体是如何服务的?我正在使用 heroku。
    猜你喜欢
    • 2012-12-03
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    相关资源
    最近更新 更多