首页 > 解决方案 > python – 我在 cpanel 上的 django 网站不会加载我的媒体文件,但当 DEBUG=True 时,我所有的 stacticfiles 和媒体都可以工作

问题描述

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

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

这是我的设置.py

设置.py

import os
from pathlib import Path


BASE_DIR = Path(__file__).resolve().parent.parent





SECRET_KEY = '#############################'

DEBUG = False

ALLOWED_HOSTS = ['##############################']




INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'appsolve.apps.AppsolveConfig',
    'ACCOUNTS',
    'afiilitePrograme',
    'manageapps',
    'News',
    'contactUS',
    
 
]


MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware',
    #'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',**strong text**
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'alpha1.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['alpha1/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'alpha1.wsgi.application'




DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}




AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]



LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True






MEDIA_URL = '/media/'
STATIC_URL = '/static/'

STATIC_ROOT='collected/static'
MEDIA_ROOT = 'collected/media'


STATICFILES_DIRS=[
os.path.join(BASE_DIR,'whereSTATIC/')


]




STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'



AUTH_USER_MODEL = 'ACCOUNTS.CustomUser'

这是我的 urls.py

> urls.py

    
  
from django.contrib import admin

from appsolve import views
from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static
import ACCOUNTS
from appsolve.views import apps
from appsolve.views import pracing
from appsolve.views import youraccount
from News.views import Newsarticls
from News.views import newsDetails
from News.views import Deals
from News.views import dealsDetails
from contactUS.views import contactUS
from contactUS.views import requestAPP
from contactUS.views import aboutUS
from contactUS.views import TermsofUse









urlpatterns = [
    path('myapps/',views.myappsss,name="myouwapps"),
    path('APPS/<int:openthefreepr>',views.openthefree,name="openthefree"),
   path('APPS/Paid/<int:prodID>',views.OpenNOW,name="OpenNOW"),
   path('pracing/',pracing,name='pricing'),
     path('youraccount/',youraccount,name='youraccount'),

   
   
   path('apps/<int:prodID>',views.productDEtails,name='productDEtails' ),

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

   path('',apps,name="home"),
   
    path('<int:prodID>/getOwned/',views.getOwned,name="getOwned"),
    path('<int:prodID>/getsubcibed/',views.getsubcibed,name="getsubcibed"),

    path('News/',Newsarticls,name="News"),
    path('News/<str:title>',newsDetails,name="newsDetails"),
     path('Deals/',Deals,name="Deals"),
   
    
    

  path('contactUS/',contactUS,name="contactUS"),
     path('requestAPP/',requestAPP,name="requestAPP"),

      path('aboutUS/',aboutUS,name="aboutUS"),
      path('TermsofUse/',TermsofUse,name="TermsofUse"),

      
    
    path('accounts/',include('ACCOUNTS.urls'),name="Accounts"),
    path('affiliate/',include('afiilitePrograme.urls'),name="afiilitePrograme"),
    path('manageapps/',include('manageapps.urls'),name="manageapps"),
    
   

     

]+ static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

我做了很多例子,但没有想到当切换到调试错误模式时所有媒体都没有加载

这是pypassenger_wsgi.py

乘客wsgi.py

from alpha1.wsgi import application 



import os
import sys
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'alpha1.settings'
import django.core.handlers.wsgi

from django.core.wsgi import get_wsgi_application
SCRIPT_NAME = os.getcwd()
class PassengerPathInfoFix(object):
    def __init__(self, app):
        self.app = app
    def __call__(self, environ, start_response):
        from urllib.parse import unquote
        environ['SCRIPT_NAME'] = SCRIPT_NAME
        request_uri = unquote(environ['REQUEST_URI'])
        script_name = unquote(environ.get('SCRIPT_NAME', ''))
        offset = request_uri.startswith(script_name) and len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
        return self.app(environ, start_response)
application = get_wsgi_application()
application = PassengerPathInfoFix(application)

有我的passenger_wsgi.py 我不知道如何修复它我有一个cpanel 共享主机

标签: pythondjangocpanel

解决方案


推荐阅读