我在 cpanel 上的 django 网站没有加载我的媒体文件(从管理员上传的图像)但是当 DEBUG=False 时我的所有 stacticfiles(css 等)都可以工作

Posted

技术标签:

【中文标题】我在 cpanel 上的 django 网站没有加载我的媒体文件(从管理员上传的图像)但是当 DEBUG=False 时我的所有 stacticfiles(css 等)都可以工作【英文标题】:My django's website on cpanel doesn't load my media files( images upload from admin ) but all my stacticfiles (css,etc)work when DEBUG= False 【发布时间】:2021-06-04 06:00:09 【问题描述】:

我有一个运行良好的 django 项目,当 debug = True 时显示从管理员上传的所有媒体文件,但我立即将更改为 debug = False django 找不到我的媒体文件夹,但它加载了我的静态文件夹。如您所见,我已正确设置了 MEDIA_ROOT 和 MEDIA_URL。

我的设置.py

# Static files (CSS, javascript, Images)
import os
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

STATIC_ROOT = os.path.join(BASE_DIR,'staticfiles')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')


#HTTPS SETTING
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True

我的 urls.py:

urlpatterns = [
    path('', include('appMain.urls',namespace='main')),
    path('auth/', include('appAuth.urls',namespace='auth')),
    path('blog/', include('blog.urls',namespace='blog')),
    
]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

所以我需要一些帮助来在 debug=False 时显示我的媒体文件

【问题讨论】:

【参考方案1】:

在 settings.py 中做这个

STATIC_URL = '/static/'

MEDIA_URL = '/media/'

  

if DEBUG:

  STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

else:

  STATIC_ROOT = os.path.join(BASE_DIR, 'static')

  

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

并在 urls.py 中导入

from django.conf.urls import url

from django.conf import settings

from django.views.static import serve

并将其粘贴到您的路径中的 urlspatterns 中

  url(r'^media/(?P<path>.*)$', serve,'document_root': settings.MEDIA_ROOT),

  url(r'^static/(?P<path>.*)$', serve,'document_root': settings.STATIC_ROOT),

喜欢这个

urlpatterns = [
    url(r'^media/(?P<path>.*)$', serve,'document_root': settings.MEDIA_ROOT),
    url(r'^static/(?P<path>.*)$', serve,'document_root': settings.STATIC_ROOT),

    path('admin/', admin.site.urls),
]

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于我在 cpanel 上的 django 网站没有加载我的媒体文件(从管理员上传的图像)但是当 DEBUG=False 时我的所有 stacticfiles(css 等)都可以工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Fastcomet Django 网站没有加载 css?

在 cPanel 上的 django 项目中安装 mysqlclient 时出错

共享主机上的 Django 应用程序依赖项(Cpanel)

使用在 django 的 cpanel 上创建的电子邮件

无法在 cpanel django 上提供媒体文件

CPANEL上的Symfony 3应用程序将无法运行