当 Debug = False 时,Django 应用程序在本地主机上收到服务器错误 500

2023-12-25

我的 django 应用程序运行正常(没有任何错误)Debug = True in 设置.py,但是当我将其切换到Debug = False I get 服务器错误 (500).

另外我得到:

  • HTML 文档的字符编码未声明。如果文档包含 US-ASCII 范围之外的字符,则在某些浏览器配置中,该文档将呈现为乱码。页面的字符编码必须在文档或传输协议中声明。

  • http://127.0.0.1:8000/favicon.ico http://127.0.0.1:8000/favicon.ico404 未找到

My 设置.py file:

"""
Django settings for zeynab_web project.

Generated by 'django-admin startproject' using Django 2.0.7.

For more information on this file, see
https://docs.djangoproject.com/en/2.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.0/ref/settings/
"""

import os
import django_heroku
import dj_database_url
from decouple import config
import cloudinary_storage

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
STATIC_ROOT = os.path.join(BASE_DIR, 'static')


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '---'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

import logging
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'mysite.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers':['file'],
            'propagate': True,
            'level':'DEBUG',
        },
        'MYAPP': {
            'handlers': ['file'],
            'level': 'DEBUG',
        },
    }
}

ALLOWED_HOSTS = ['*']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    #'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    'cloudinary_storage',
    'cloudinary',

    # own apps
    'pages',
    'products',
]

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

ROOT_URLCONF = 'zeynab_web.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, '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 = 'zeynab_web.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators

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',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/

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

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

DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.RawMediaCloudinaryStorage'

CLOUDINARY_STORAGE = {
    'CLOUD_NAME': '---',
    'API_KEY': '---',
    'API_SECRET': '---'
}

#STATICFILES_STORAGE = 'whitenoise.storageCompressedManifestStaticFilesStorage'

# Email settings
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '---'
EMAIL_HOST_PASSWORD = '---'
EMAIL_USE_TLS = True

django_heroku.settings(locals())

#update comment

My wsgi.py file:

"""
WSGI config for zeynab_web project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application
#from whitenoise.django import DjangoWhiteNoise

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "zeynab_web.settings")

application = get_wsgi_application()
#application = DjangoWhiteNoise(application)

读完表格后

I tried ALLOWED_HOSTS = ['*'],但没有任何改变。

我尝试插入

import logging
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'mysite.log',
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {
            'handlers':['file'],
            'propagate': True,
            'level':'DEBUG',
        },
        'MYAPP': {
            'handlers': ['file'],
            'level': 'DEBUG',
        },
    }
}

to my 设置.py文件来查看解决错误的日志,但我的终端中没有出现日志。

Edit:

实现了 @Dos 的代码并得到相同的错误。

这是我的新 settings.py 文件

import os
import django_heroku
import dj_database_url
from decouple import config
import cloudinary_storage

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# and here the rest of your local settings

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '---'

WSGI_APPLICATION = 'zeynab_web.wsgi.application'

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'whitenoise.runserver_nostatic',
    'django.contrib.staticfiles',
    'cloudinary_storage',
    'cloudinary',

    # own apps
    'pages',
    'products',
]

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

ROOT_URLCONF = 'zeynab_web.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, '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',
            ],
        },
    },
]

# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Password validation
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',
    },
]

# Static files configuration
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = os.path.join(BASE_DIR, 'static/')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
#STATICFILES_STORAGE = 'whitenoise.storageCompressedManifestStaticFilesStorage'

# Media configuration
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.RawMediaCloudinaryStorage'
CLOUDINARY_STORAGE = {
    'CLOUD_NAME': '---',
    'API_KEY': '---',
    'API_SECRET': '---'
}

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    #'sass_processor.finders.CssFinder',
)

django_heroku.settings(locals())

# Loading test/prod settings based on ENV settings
ENV = os.environ.get('ENV')

if ENV == 'prod':
    try:
        from .production_settings import *
        MIDDLEWARE.append('whitenoise.middleware.WhiteNoiseMiddleware',)
    except ImportError:
        pass

和 Production_settings.py 文件

import os

DEBUG = False

SECRET_KEY = os.environ.get('SECRET_KEY')

#DATABASES = {
#    'default': {
#       'ENGINE': 'django.db.backends.postgresql',
#        'NAME': os.environ.get('DB_NAME'),
#        'USER': os.environ.get('DB_USER'),
#        'PASSWORD': os.environ.get('DB_PASSWORD'),
#        'HOST': os.environ.get('DB_HOST'),
#        'PORT': '5432',
#    }
#}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# Password validation (I removed them in the local settings)
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'},
]

ALLOWED_HOSTS = (
    'ophrys.herokuapp.com',
    'localhost',
)

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

SECURE_SSL_REDIRECT = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True

添加后将 WhiteNoise 添加到中间件

MIDDLEWARE = [
  # 'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
]

执行这个命令

python manage.py collectstatic --noinput
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 Debug = False 时,Django 应用程序在本地主机上收到服务器错误 500 的相关文章

随机推荐

  • 如何为同源的 iframe 提供单独的 sessionStorage

    标准 W3C 标准对 localStorages 的描述如下 不同的作者共享一个主机名 例如用户在geocities com 所有共享一个本地存储对象 没有通过路径名限制访问的功能 因此 敦促共享主机上的作者避免使用这些功能 因为其他作者读
  • 在 Flask 中上传图片

    我必须在项目目录的静态文件夹中上传一些图像 但我不知道如何对我的代码说 在下面的 code py 中 我可以上传图像并将其存储在静态文件夹同一级别的项目目录中 但我希望该图像可以存储在静态文件夹内 app route uploader me
  • 根据 python 中的列表测试用户输入

    我需要测试用户输入是否与列表的元素相同 现在我正在这样做 cars red yellow blue guess str input if guess cars 1 or guess cars 2 print success 但是我正在处理更
  • 包私有类中的公共方法

    将方法标记为有什么区别吗public在包私有类中 class SomePackagePrivateClass void foo package private method public void bar public method 之间的
  • 如何将参数传递到 Flex/actionscript 中的事件侦听器函数中?

    因为当使用 sql lite 时 如果你尝试同时执行一个函数 它会抛出一个错误 我只是想创建一个函数来检查它是否正在执行 如果它在 10 毫秒内重试 这个函数就可以正常工作如果我不必向函数传递任何参数 但我很困惑如何将变量传递回它将执行的函
  • Pandas 到 Excel 条件格式整列

    我想将 Pandas 数据框写入 Excel 并格式化 为此我正在使用xlsxwriter 我的问题有两个 首先 如何将条件格式应用于整列 在里面examples http xlsxwriter readthedocs io example
  • 如何在Python内部列表中运行嵌套循环,以便外部循环始终从列表的下一个元素开始,依此类推

    我有一个类似的列表 16777230 0 16777226 1 16777252 2 16777246 0 我想在 python 中的操作的循环 嵌套循环 内创建一个循环 以便内部循环始终从外部循环的下一个元素开始 例如 外循环将在每次迭代
  • '(' 或 '[' 预期

    尝试编译我的程序时出现以下错误 预期为 或 public AccountArrayList line one below is the hi lighted code ArrayList accounts new ArrayList acc
  • Python 模块初始化

    在模块代码中初始化模块中的对象是不好的做法吗 in Module py class Foo object def init self self x Foo Foo Foo 与用户代码相比 您可以 gt gt gt from Module i
  • 同时支持 Android 和 Android TV 的 Android Studio 项目

    我正在尝试创建一个同时支持 Android 手机 平板电脑 和 AndroidTV 的 AndroidStudio 项目 目标是在手机 平板电脑和 AndroidTV 上拥有类似的功能 同时不需要另一个来操作 并重用代码 当我创建一个新项目
  • 在 iPhone 上的 iOS Safari 中访问相机

    I have 单页网络应用程序 SPA 那个verifies用户作为注册过程的一部分 验证的一部分是捕获selfie用户的 为此 我实现了以下代码的一个版本来获取camera输入到一个video网页上的元素 然后我可以从中sample图像转
  • 如何在添加数据后调整android webview的大小

    在布局 线性 垂直 层次结构中 我有多个视图 其中之一是 WebView 它们都有相同的参数 android layout width fill parent android layout height wrap content 对于所有视
  • c++filt 不会分解 typeid 名称

    我正在 GCC 上运行代码C 编译器 输出 type info name include
  • SQLException:等待空闲的可用连接超时

    我正在用 java 构建一个应用程序Play Framework 2 0 4 该应用程序部署在heroku使用cleardb数据库 用户不断收到此偶尔的错误 PlayException Execution exception Persist
  • WPF 应用程序中的 IIS 平滑流处理

    我怎样才能玩IIS 平滑流式传输 http www iis net expand SmoothStreamingWPF 应用程序中的视频 我知道 Silverlight 对其有内置支持 但我找不到 WPF 的太多信息 会不会MediaEle
  • 为什么 grid-gap 会改变 CSS Grid 中列的宽度?

    使用 css grid 我在容器内设置了一个 1002px 宽的 24 列网格 在容器 div 内 有一个跨 21 列的子 div 我期望子 div 的宽度是 21 24 1002 876 75 当添加 grid gap 属性时 列的宽度减
  • 连续 GA 命中率下降

    我想使用 Google 分析和本地存储跟踪离线事件 这是我的代码 var gaq gaq gaq push setAccount UA 27966345 1 gaq push setDomainName none gaq push setS
  • 使用正则表达式匹配电视和电影文件名

    我一直在努力获取正则表达式来从视频文件名中获取电视节目或电影名称 播出年份 如果存在 季节 和剧集 我有一个正则表达式 如下 似乎对于电影和电视节目具有双年日期的节目 其中一个年份是节目 电影名称 另一个是它播出的年份 很有效 对于电视节目
  • 不支持的列数据类型 ODP.NET

    我正在尝试将基于 ODP NET 11g 构建的现有应用程序升级到 ODP NET 12c 希望它能够提高数据库调用和数据检索的性能 在这方面 我安装了最新的ODP NET 12c 并将所有Oracle项目引用更改为指向最新的Oracle
  • 当 Debug = False 时,Django 应用程序在本地主机上收到服务器错误 500

    我的 django 应用程序运行正常 没有任何错误 Debug True in 设置 py 但是当我将其切换到Debug False I get 服务器错误 500 另外我得到 HTML 文档的字符编码未声明 如果文档包含 US ASCII