Search code examples
djangopythonanywhere

Проблема с файлом wsgi.py (Problem with wsgi.py file)


The error log that pythonanywhere prints

!2020-03-29 21:29:25,095: Error running WSGI application 2020-03-29 21:29:25,095: django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty. 2020-03-29 21:29:25,095: File "/var/www/relizerel_pythonanywhere_com_wsgi.py", line 22, in 2020-03-29 21:29:25,095: application = get_wsgi_application()

!2020-03-29 21:29:25,095: File "/usr/lib/python3.8/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application 2020-03-29 21:29:25,095: django.setup(set_prefix=False)

!2020-03-29 21:29:25,096: File "/usr/lib/python3.8/site-packages/django/init.py", line 19, in setup 2020-03-29 21:29:25,096: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)

!2020-03-29 21:29:25,096: File "/usr/lib/python3.8/site-packages/django/conf/init.py", line 79, in getattr 2020-03-29 21:29:25,096: self._setup(name)

!2020-03-29 21:29:25,096: File "/usr/lib/python3.8/site-packages/django/conf/init.py", line 66, in _setup 2020-03-29 21:29:25,096: self._wrapped = Settings(settings_module)

!2020-03-29 21:29:25,097: File "/usr/lib/python3.8/site-packages/django/conf/init.py", line 176, in init 2020-03-29 21:29:25,097: raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

My settings.py file

"""
Django settings for myshop project.

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

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

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

import os

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


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/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 = True

ALLOWED_HOSTS = ['relizerel.pythonanywhere.com']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    '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 = 'myshop.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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 = 'myshop.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/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.2/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.2/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.2/howto/static-files/

STATIC_URL = '/static/'

# default static files settings for PythonAnywhere.
# see https://help.pythonanywhere.com/pages/DjangoStaticFiles for more info
MEDIA_ROOT = '/home/relizerel/myshop/media'
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/relizerel/myshop/static'
STATIC_URL = '/static/'

My wsgi.py file

"""
WSGI config for myshop 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/3.0/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myshop.settings.dev")

application = get_wsgi_application()

I think the problem is in SECRET KEY, but in all files it is indicated.

What other data is needed to make it easier for you to give an answer?

I added Wagtail CMS after creating a standard web application. However, collectstatic, makemigrations and migrate did not return any errors

Link to my repository on GitHub: https://github.com/relizerel/myshopwt.git


Solution

  • Your django settings.py file has no SECRET_KEY. You may have to define this as an environment variable or explicitly in your code depending on how your settings.py is written.

    As per your wsgi.py file, it is referring to myshop/settings/dev.py. Make sure the SECRET_KEY is in that settings file, or when running gunicorn (or whatever you use to deploy the server) that you set the environment variable DJANGO_SETTINGS_MODULE to the actual settings file with the SECRET_KEY