Django 正在加载静态文件而不是从生产后端存储的图像

Django is loading static files but not image that are stored from backend in production

正如标题所说,在我将 DEBUG 更改为 False 后,从管理面板上传的图像无法加载。但是,仅从 HTML 端加载的 css 文件和图像等其他静态文件可以正确呈现。

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('marathon.urls', namespace='homepage')),
    path('accounts/', include('allauth.urls')),
    path('logout', LogoutView.as_view(), name='logout'),
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

html 渲染图像的文件

    <div class="js-billboard">
        {% for slide in slider %}
            <div class="billboard__item">
                <figure><img src="{{ slide.image.url }}" alt="Mountain Marathon"></figure>
                <div class="billboard__detail">
                    <div class="grid-container">
                        <div class="grid-x grid-padding-x">
                            <div class="col-12 cell">
                                <h2>{{ slide.title }}</h2>
                                <p><span>{{ slide.description }}</span></p>
                                <a href="{{ slide.link }}" class="button">{{ slide.link_title }}</a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        {% endfor %}
    </div>

我假设您的项目中有以下代码行urls.py

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

请注意,如果 DEBUG=True 在这种情况下,您的 媒体网址 static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 只会添加到您的 urlpatterns 列表中。 Django 不在生产中或 DEBUG=False

时提供媒体文件

我建议使用在线存储 API,例如 AWS3、cloudinary 甚至 firebase。无论是 DEBUG=True 还是 DEBUG=False.

,它们确实提供了提供媒体文件的能力
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)

将此添加到您的主 urls.py 文件夹中,并在您的主项目和 settings.py

中创建一个 forlder name staic cdn
STATIC_CDN = BASE_DIR / 'static_cdn'

and in bottom 

STATIC_ROOT = STATIC_CDN

# MEDIA
MEDIA_ROOT = MEDIA_DIR
MEDIA_URL = '/media/'

and then run 
python manage.py collectstatic 

在你的终端中它会做什么它会在你的静态 cdn 文件夹中创建你的静态文件的副本,因为云基础存储在你的 cdn 文件夹中查看你的静态或媒体文件 并确保安装 pillow

如果仍然出现错误请告诉我