I changed my server settings.py from Debug = True
to Debug = False
.
I can get httpResponses
from my other app urls but I can't access the /admin url specifically, I get the Server Error (500)
I tried to change the ALLOWED_HOSTS = ['my-app-name.herokuapp.com','*']
as other topics of this problem says but it didn't help me in my case.
(added '*' just for this question and to show that I tried it and it doesn't solve the problem)
EDIT 1(Settings added):
settings.py
"""
Django settings for mysite project.
Generated by 'django-admin startproject' using Django 1.10.3.
For more information on this file, see
https://docs.djangoproject.com/en/1.10/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.10/ref/settings/
"""
import os
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__)))
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ADMINS = [('admin', '[email protected]')]
MANAGERS = ADMINS
ALLOWED_HOSTS = ['mysitename.herokuapp.com', 'localhost', '127.0.0.1','*']
# Application definition
INSTALLED_APPS = [
'Myappname.apps.MyAppNameConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'whitenoise.runserver_nostatic',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.admindocs',
]
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 = 'Mysiteproj.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 = 'Mysiteproj.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
# Update database configuration with $DATABASE_URL.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
# Password validation
# https://docs.djangoproject.com/en/1.10/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',
},
]
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
EDIT 2 (Log added):
I had problem with creating a log file. now that I manage to config it, here is the log trace when I try to access admin site.
Internal Server Error: /admin/login/
Traceback (most recent call last):
File "c:\Python27\lib\site-packages\django\core\handlers\exception.py", line 39, in inner
response = get_response(request)
File "c:\Python27\lib\site-packages\django\core\handlers\base.py", line 217, in _get_response
response = self.process_exception_by_middleware(e, request)
File "c:\Python27\lib\site-packages\django\core\handlers\base.py", line 215, in _get_response
response = response.render()
File "c:\Python27\lib\site-packages\django\template\response.py", line 109, in render
self.content = self.rendered_content
File "c:\Python27\lib\site-packages\django\template\response.py", line 86, in rendered_content
content = template.render(context, self._request)
File "c:\Python27\lib\site-packages\django\template\backends\django.py", line 66, in render
return self.template.render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 208, in render
return self._render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 199, in _render
return self.nodelist.render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 994, in render
bit = node.render_annotated(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
File "c:\Python27\lib\site-packages\django\template\loader_tags.py", line 174, in render
return compiled_parent._render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 199, in _render
return self.nodelist.render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 994, in render
bit = node.render_annotated(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
File "c:\Python27\lib\site-packages\django\template\loader_tags.py", line 174, in render
return compiled_parent._render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 199, in _render
return self.nodelist.render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 994, in render
bit = node.render_annotated(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
File "c:\Python27\lib\site-packages\django\template\loader_tags.py", line 70, in render
result = block.nodelist.render(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 994, in render
bit = node.render_annotated(context)
File "c:\Python27\lib\site-packages\django\template\base.py", line 961, in render_annotated
return self.render(context)
File "c:\Python27\lib\site-packages\django\templatetags\static.py", line 104, in render
url = self.url(context)
File "c:\Python27\lib\site-packages\django\templatetags\static.py", line 101, in url
return self.handle_simple(path)
File "c:\Python27\lib\site-packages\django\templatetags\static.py", line 114, in handle_simple
return staticfiles_storage.url(path)
File "c:\Python27\lib\site-packages\django\contrib\staticfiles\storage.py", line 132, in url
hashed_name = self.stored_name(clean_name)
File "c:\Python27\lib\site-packages\django\contrib\staticfiles\storage.py", line 292, in stored_name
cache_name = self.clean_name(self.hashed_name(name))
File "c:\Python27\lib\site-packages\django\contrib\staticfiles\storage.py", line 95, in hashed_name
(clean_name, self))
ValueError: The file 'admin/css/base.css' could not be found with <whitenoise.storage.CompressedManifestStaticFilesStorage object at 0x0465BAF0>.
"GET /admin/login/?next=/admin/ HTTP/1.1" 500 27
Why does it block me? How can I fix it? thanks.
While i was looking at your logs I came with a suggestion that might be your problem.
When loading admin pages Django uses it's own static files in order to show you with proper HTML/JS/CSS the website you see as the administration pages for your models.
All of these files come from the Django library. When you are saying that you aren't debugging your server(DEBUG=FALSE), Django wants to load all the assets(HTML,JS,CSS files) the running enviornment of the project and not the library itself.He does that because he is depending on the developer to call the collectstatic command which needs a proper & working static files configuration.
By the way, when i say proper configuration i mean directories and paths that exists.
More over , if you have a wrong configuration for loading static files(files like jQuery,Bootstrap & etc...) you can't load them...
I see by the configuration and other comments that you are using Heroku. Heroku by default automaticlly calls the collectstatic command for you when he needs of course to collect all the static files(Including the ADMIN files....) Link for ref - Heroku - Django and Static Assets
So we know so far few things:
I have a huge guess that your static files configuration is wrong and you never called or checked the collectstatic command locally on your machine. Which means you are developing a REST api server with access to admin pages to monitor your database... when you are using Django in this manner and not for developing websites, that usualy happens.
I am not implying that it's wrong to develop REST api with Django or anything I am just trying to make everything clear
Try using this code snippet for your static files configuraiton:
I hope this answer will work for you and please do tell if it did.