I know that there are a lot of questions about that, but to be honest most of them stays unanswered or the solutions do not work.
I have "simple" problem. When I set Debug to False and push it to heroku I get "Server Error (500)". I read those topics:
Heroku server error (500) when Debug = False , whitenoise could not find style.css
Whenever debug=False in django, Heroku gives Server Error (500) and when debug=True no error
https://www.reddit.com/r/djangolearning/comments/acj65x/why_am_i_getting_a_500_server_error_when/
https://teamtreehouse.com/community/heroku-bad-request-500
And I tried their solutions but it still don't work. Only solution that I didn't test and is supposed to help is to get rid of whitenoise. This one is kinda "no go" for me.
What Can I do about this error?
Thanks and Cheers!
EDIT:
Here is my log. I tried to comment out white noise but It didn't help.
I was looking in my code but I don't have any reference to "favicon.ico". Also, I tried to run collectstatic because I found some topics related to that but it didn't work for me.
First it asked me:
You have requested to collect static files at the destination
location as specified in your settings:
/app/staticfiles
And then I got error:
FileNotFoundError: [Errno 2] No such file or directory: '/app/static'
Which is weird, because first it confirmed with me that I overrited this folder from static to staticfiles. In my main directory I have folder "staticfiles". In my app folder I have folder "static". And with Debug off everything is working.
2020-05-19T05:15:40.192943+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=robotbuilder.herokuapp.com request_id=eeaf4fd1-b73b-4e84-aacd-7e701d3e8932 fwd="83.26.255.146" dyno=web.1 connect=1ms service=3ms status=404 bytes=388 protocol=http
2020-05-19T05:15:39.991705+00:00 app[web.1]: [2020-05-19 05:15:39 +0000] [11] [ERROR] Error handling request /
2020-05-19T05:15:39.991725+00:00 app[web.1]: Traceback (most recent call last):
2020-05-19T05:15:39.991726+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
2020-05-19T05:15:39.991734+00:00 app[web.1]: self.handle_request(listener, req, client, addr)
2020-05-19T05:15:39.991734+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
2020-05-19T05:15:39.991735+00:00 app[web.1]: respiter = self.wsgi(environ, resp.start_response)
2020-05-19T05:15:39.991735+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 133, in __call__
2020-05-19T05:15:39.991735+00:00 app[web.1]: response = self.get_response(request)
2020-05-19T05:15:39.991736+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py", line 75, in get_response
2020-05-19T05:15:39.991736+00:00 app[web.1]: response = self._middleware_chain(request)
2020-05-19T05:15:39.991736+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991737+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991739+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991740+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991741+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991741+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991741+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/whitenoise/middleware.py", line 58, in __call__
2020-05-19T05:15:39.991742+00:00 app[web.1]: response = self.get_response(request)
2020-05-19T05:15:39.991746+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991747+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991747+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991747+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991747+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991748+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991748+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991748+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991748+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991749+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991749+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991749+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991750+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991750+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991750+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991750+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991751+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991751+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991751+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991752+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991752+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991752+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991752+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991753+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991753+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991753+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991753+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991754+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991754+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991755+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991763+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991763+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991763+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991764+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991764+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991764+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991764+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991765+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991765+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991765+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991765+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991766+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991766+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991766+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991766+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991767+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991767+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991767+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991767+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991768+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991768+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991768+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991768+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991769+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991769+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/utils/deprecation.py", line 94, in __call__
2020-05-19T05:15:39.991769+00:00 app[web.1]: response = response or self.get_response(request)
2020-05-19T05:15:39.991769+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991770+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991770+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991770+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991771+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991771+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991771+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/whitenoise/middleware.py", line 58, in __call__
2020-05-19T05:15:39.991771+00:00 app[web.1]: response = self.get_response(request)
2020-05-19T05:15:39.991772+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 36, in inner
2020-05-19T05:15:39.991772+00:00 app[web.1]: response = response_for_exception(request, exc)
2020-05-19T05:15:39.991772+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 90, in response_for_exception
2020-05-19T05:15:39.991772+00:00 app[web.1]: response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
2020-05-19T05:15:39.991780+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
2020-05-19T05:15:39.991781+00:00 app[web.1]: response = get_response(request)
2020-05-19T05:15:39.991781+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
2020-05-19T05:15:39.991782+00:00 app[web.1]: response = self.process_exception_by_middleware(e, request)
2020-05-19T05:15:39.991782+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
2020-05-19T05:15:39.991782+00:00 app[web.1]: response = wrapped_callback(request, *callback_args, **callback_kwargs)
2020-05-19T05:15:39.991783+00:00 app[web.1]: File "/app/builder/views.py", line 8, in home
2020-05-19T05:15:39.991783+00:00 app[web.1]: return render(request, "builder/home.html")
2020-05-19T05:15:39.991783+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/shortcuts.py", line 19, in render
2020-05-19T05:15:39.991784+00:00 app[web.1]: content = loader.render_to_string(template_name, context, request, using=using)
2020-05-19T05:15:39.991790+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
2020-05-19T05:15:39.991790+00:00 app[web.1]: return template.render(context, request)
2020-05-19T05:15:39.991791+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
2020-05-19T05:15:39.991791+00:00 app[web.1]: return self.template.render(context)
2020-05-19T05:15:39.991791+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 171, in render
2020-05-19T05:15:39.991792+00:00 app[web.1]: return self._render(context)
2020-05-19T05:15:39.991792+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
2020-05-19T05:15:39.991792+00:00 app[web.1]: return self.nodelist.render(context)
2020-05-19T05:15:39.991792+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 936, in render
2020-05-19T05:15:39.991793+00:00 app[web.1]: bit = node.render_annotated(context)
2020-05-19T05:15:39.991793+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
2020-05-19T05:15:39.991798+00:00 app[web.1]: return self.render(context)
2020-05-19T05:15:39.991798+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
2020-05-19T05:15:39.991798+00:00 app[web.1]: return compiled_parent._render(context)
2020-05-19T05:15:39.991799+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
2020-05-19T05:15:39.991799+00:00 app[web.1]: return self.nodelist.render(context)
2020-05-19T05:15:39.991799+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 936, in render
2020-05-19T05:15:39.991799+00:00 app[web.1]: bit = node.render_annotated(context)
2020-05-19T05:15:39.991800+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
2020-05-19T05:15:39.991800+00:00 app[web.1]: return self.render(context)
2020-05-19T05:15:39.991800+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/templatetags/static.py", line 106, in render
2020-05-19T05:15:39.991800+00:00 app[web.1]: url = self.url(context)
2020-05-19T05:15:39.991804+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/templatetags/static.py", line 103, in url
2020-05-19T05:15:39.991804+00:00 app[web.1]: return self.handle_simple(path)
2020-05-19T05:15:39.991804+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/templatetags/static.py", line 118, in handle_simple
2020-05-19T05:15:39.991805+00:00 app[web.1]: return staticfiles_storage.url(path)
2020-05-19T05:15:39.991805+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/storage.py", line 153, in url
2020-05-19T05:15:39.991805+00:00 app[web.1]: return self._url(self.stored_name, name, force)
2020-05-19T05:15:39.991806+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/storage.py", line 132, in _url
2020-05-19T05:15:39.991806+00:00 app[web.1]: hashed_name = hashed_name_func(*args)
2020-05-19T05:15:39.991806+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/storage.py", line 423, in stored_name
2020-05-19T05:15:39.991806+00:00 app[web.1]: raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
2020-05-19T05:15:39.991807+00:00 app[web.1]: ValueError: Missing staticfiles manifest entry for 'builder/logo.png'
2020-05-19T05:15:39.992027+00:00 app[web.1]: 10.95.191.28 - - [19/May/2020:05:15:39 +0000] "GET / HTTP/1.1" 500 0 "-" "-"
2020-05-19T05:15:40.192825+00:00 app[web.1]: 10.95.191.28 - - [19/May/2020:05:15:40 +0000] "GET /favicon.ico HTTP/1.1" 404 179 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"
2020-05-19T05:15:39.996509+00:00 heroku[router]: at=info method=GET path="/" host=robotbuilder.herokuapp.com request_id=de877e93-558a-40ab-bf11-b6de261cb707 fwd="83.26.255.146" dyno=web.1 connect=1ms service=57ms status=500 bytes=244 protocol=http
EDIT2:
import os
import django_heroku
from decouple import config
import dj_database_url
# 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/3.0/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 = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'builder',
]
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',
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
'whitenoise.middleware.WhiteNoiseMiddleware',
]
ROOT_URLCONF = 'robot_builder.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 = 'robot_builder.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
}
}
# If you want to work with your remote database on your local machine, you need to paste link from heroku lower:
# DATABASES['default'] = dj_database_url.config(default='postgres://qkwlkrkahynyik:21a1420ab5820795f3a0c736ebb607419fc7a111f093924dcfc4567dfd906b9f@ec2-54-147-209-121.compute-1.amazonaws.com:5432/d2v01dp40p4er2')
db_from_env = dj_database_url.config(conn_max_age=600)
DATABASES['default'].update(db_from_env)
# Password validation
# https://docs.djangoproject.com/en/3.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/3.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/3.0/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_TMP = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
# Debugging in heroku live
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ('%(asctime)s [%(process)d] [%(levelname)s] ' +
'pathname=%(pathname)s lineno=%(lineno)s ' +
'funcname=%(funcName)s %(message)s'),
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'testlogger': {
'handlers': ['console'],
'level': 'INFO',
}
}
}
DEBUG_PROPAGATE_EXCEPTIONS = True
COMPRESS_ENABLED = os.environ.get('COMPRESS_ENABLED', False)
# Activate Django-Heroku.
django_heroku.settings(locals())
My folder structure:
robot_builder
> builder
>> migrations
>> static
>>> css
>>> builder
>>>> my images, including logo.png used as favicon
>> templates
>> models.py etc.
> media
> robot_builder
>> settings.py etc.
> staticfiles
When DEBUG is False , Django will email the users listed in the ADMINS setting whenever your code raises an unhandled exception and results in an internal server error (strictly speaking, for any response with an HTTP status code of 500 or greater). This gives the administrators immediate notification of any errors.
To disable debug mode, set DEBUG = False in your Django settings file.
Open your settings.py file (or settings_local.py ) and set DEBUG = False (just add that line if necessary). Turning off the Django debug mode will: Suppress the verbose Django error messages in favor of a standard 404 or 500 error page. You will now find Django error messages printed in your arches.
I think I got it. The solution is working. But I think that it's also very weird. I would appreciate if someone could comment why is it like that.
You can leave whitenoise, you can make a little bit tidying up with static files dirs. Make it look like that:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
But it isn't necessary I think. (It is also best to keep your "static" folder in your main project folder).
But The big fix is (working on django 3):
You need to run
python manage.py collectstatic
Locally ! And then submit it to heroku. And then, everything is working with Debug set to False. I tried to keep collectstatic just with .keep file. I tried to commit only .json hoping that it will be repopulated with new collectstatic files. But no. It is working only if I run collectstatic locally and then commit EVERYTHING to heroku.
If someone have more understanding of this issue and could explain it to me I would be really grateful.
In the mean time I hope that someone else will also benefit from this solution.
I found answer on this question - ValueError: Missing staticfiles manifest entry for 'favicon.ico' . Thank you very much emazzotta, also I didn't have to get rid of whitenoise and It is working in django3.
Debug your django app by logs by typing this, heroku logs --tail -a your_herokuapp_name
or https://dashboard.heroku.com/apps/your_herokuapp_name/logs.
Before that add this in your settings.py
:
# Debugging in heroku live
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': ('%(asctime)s [%(process)d] [%(levelname)s] ' +
'pathname=%(pathname)s lineno=%(lineno)s ' +
'funcname=%(funcName)s %(message)s'),
'datefmt': '%Y-%m-%d %H:%M:%S'
},
'simple': {
'format': '%(levelname)s %(message)s'
}
},
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'testlogger': {
'handlers': ['console'],
'level': 'INFO',
}
}
}
DEBUG_PROPAGATE_EXCEPTIONS = True
COMPRESS_ENABLED = os.environ.get('COMPRESS_ENABLED', False)
This will show you error with debug=False
in heroku logs.
STACKOVERFLOW QUESTION [SOURCE]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With