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

2024-05-12 23:23:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django项目,它工作得很好,当debug=True时显示从管理员上传的所有媒体文件,但我立即将change改为debug=False,django找不到我的媒体文件夹,但它加载了我的静态文件夹。如您所见,我已正确设置了媒体根目录和媒体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

My URL.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时,我需要一些帮助来显示媒体文件


Tags: pathdebugtrueurlbaseincludeosdir
1条回答
网友
1楼 · 发布于 2024-05-12 23:23:23

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

和在URL.py导入中

from django.conf.urls import url

from django.conf import settings

from django.views.static import serve

并将其粘贴到您的路径所在的URLSpattern中

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

相关问题 更多 >