0

I would like to publish my website made in Django with Debug=False setting. However, this gives me error 500. I did my best but it still doesn't work. Here is what I already tried:

  • I went through this question: CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
  • I learnt I need to add allowed_hosts but neither localhost, *, nor the link to my website worked.
  • I tried to collect staticfiles. It did not help. My project is on heroku and heroku collects all staticfiles authomatically by itself.
  • There might be some problem with setting of whitenoise, but I am not able to run debug=False even locally.

You can find all my code here: https://github.com/eliska-n/elinit/tree/master. Here I share my settings.py file.

    from pathlib import Path
    import django_heroku
    import dj_database_url
    from decouple import config
    
    
    # Build paths inside the project like this: BASE_DIR / 'subdir'.
    BASE_DIR = Path(__file__).resolve().parent.parent
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = config("SECRET_KEY")
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = False
    
    ALLOWED_HOSTS = ['*']
    
    
    # Application definition
    
    INSTALLED_APPS = [
        "blog",
        "members",
        "ckeditor",
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    
    CKEDITOR_CONFIGS = {
    'default': {
        #'toolbar': None, #You can change this based on your requirements.
        'width': 'auto',
              },
        }
    
    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',
        'whitenoise.middleware.WhiteNoiseMiddleware',
    ]
    
    ROOT_URLCONF = 'elinit.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 = 'elinit.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
    
    
    # Password validation
    # https://docs.djangoproject.com/en/3.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/3.2/topics/i18n/
    
    LANGUAGE_CODE = 'en-GB'
    
    TIME_ZONE = 'Europe/Istanbul'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/3.2/howto/static-files/
    
    STATIC_URL = '/static/'
    MEDIA_URL = "/media/"
    
    MEDIA_ROOT = BASE_DIR / "media"
    STATICFILES_DIRS = [BASE_DIR / "static"]
    
    STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
    
    DJANGORESIZED_DEFAULT_SIZE = [1920, 1080]
    DJANGORESIZED_DEFAULT_QUALITY = 75
    DJANGORESIZED_DEFAULT_KEEP_META = True
    DJANGORESIZED_DEFAULT_FORCE_FORMAT = 'JPEG'
    DJANGORESIZED_DEFAULT_FORMAT_EXTENSIONS = {'JPEG': ".jpg"}
    DJANGORESIZED_DEFAULT_NORMALIZE_ROTATION = True
    
    # Default primary key field type
    # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
    
    DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
    
    LOGIN_REDIRECT_URL = "index"
    LOGOUT_REDIRECT_URL = "index"
    
    django_heroku.settings(locals())
lucutzu33
  • 3,470
  • 1
  • 10
  • 24
Eliska
  • 11
  • 4
  • Did you run migrations in Heroku? `python manage.py migrate` – Andries D. Niemandt Sep 23 '21 at 14:18
  • Can you try first to see if ALLOWED_HOSTS = ['127.0.0.1:8000']. If that works locally then there must be another problem that we need to find out. let us know after trying that – Cyebukayire Sep 23 '21 at 14:55
  • I ran migrations in Heroku the first time I pushed the website there. Never after. But I haven't changed anything in the database, I guess... ALLOWED_HOSTS = ['127.0.0.1:8000'] also does not work. 'local_host', 'localhost' do not work either. My website does not run even locally when debug=False. – Eliska Sep 24 '21 at 09:02

0 Answers0