Django - A server error occurred. Please contact the administrator
Asked Answered
Z

7

7

I've just started learning Django and followed their tutorial to the letter. I've tried to set up the website three times, every time I was greeted with the same error (in the title).

Again, followed their official tutorial to the letter. I'm at Tutorial 2, where I'm supposed to access the admin page. When I set DEBUG = False in settings.py, I get the error message in the title, and this is what the console outputs:

deusdies@galaksija:~/Documents/djangosites/testing$ python manage.py runserver
Validating models...

0 errors found
Django version 1.4.3, using settings 'testing.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Traceback (most recent call last):
  File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__
    response = self.get_response(request)
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 153, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 228, in handle_uncaught_exception
    return callback(request, **param_dict)
  File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/views/defaults.py", line 32, in server_error
    t = loader.get_template(template_name) # You need to create a 500.html template.
  File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", line 145, in get_template
    template, origin = find_template(template_name)
  File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", line 138, in find_template
    raise TemplateDoesNotExist(name)
TemplateDoesNotExist: 500.html
[09/Feb/2013 06:47:23] "GET /admin/ HTTP/1.1" 500 59

This is with DEBUG = False. With DEBUG = True, I get the standard "It works!" page, even when I access the /admin/ URL, or for that matter any other url on the page.

Here is my settings.py:

# Django settings for testing project.

DEBUG = False #I've been playing with this
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    ('deusdies', '[email protected]'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'baza',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'America/Chicago'

# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'

SITE_ID = 1

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = ''

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

# Make this unique, and don't share it with anybody.
SECRET_KEY = 'fx$2x-fr0xynw$74j69)tj^(11_xcb7$y2018l+99i3^20wb=!'

# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'testing.urls'

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'testing.wsgi.application'

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    'django.contrib.admindocs',
    'polls',
)

# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

Some folks elsewhere on SO suggested I create a 500.html template and see what the error is - only I have no idea how to do this.

Zamboanga answered 9/2, 2013 at 13:7 Comment(2)
your settings is incomplete, you do not have path for your templates that's why your getting that errorEuchre
This was automatically generated by django-admin.py ...Zamboanga
E
14

Change timezone to utc in settings.py file,It worked for me

Eventempered answered 29/11, 2018 at 13:50 Comment(2)
For further reference, timezones shouldn't be set based on hours (ex: "UTC+2"), but by zone identifier (ex: "Europe/Istanbul")Boughpot
Yes, I also had this issue and in was cured by correct identified. I just wonder, where is the list of all correct time zone identifiers?Adminicle
Z
3

I have found the solution to my problem after following a YouTube video tutorial for a somewhat older version of Django. I had to uncomment certain lines in urls.py file (specifically the ones related to admin) and now it works. I am baffled as to why is this left out in the official tutorial...

Zamboanga answered 9/2, 2013 at 13:38 Comment(6)
Other than here docs.djangoproject.com/en/1.4/intro/tutorial02/… where it says "Edit your mysite/urls.py file and uncomment the lines that reference the admin – there are three lines in total to uncomment." then shows a highlighted version of the lines.Upgrowth
That's not the tutorial linked from the homepage. I followed this: I went to djangoproject.com, clicked on "Download latest release" which I downloaded, then clicked a link on that page entitled "Installation guide" which took me to docs.djangoproject.com/en/dev/intro/install. Silly if you ask me, offering one version for download, and then linking to a tutorial for a different version. At least they could have made it stand out a bit more.Zamboanga
That's a really good point and probably worth opening a ticket.Upgrowth
Agreed. I have therefore created a ticket on djangoproject.com . Thanks for your help, Mark.Zamboanga
The documentation has always used a cookie to indicate which branch of the documentation you are using. If the "Installation guide" pointed you to dev instead of the latest stable branch it means that some time in the past you had switched to dev. With an empty cache, visiting djangoproject.com will point me to the 1.4 documentation.Concinnous
It points you there now because I submitted a ticket and the issue was recognized and quickly resolved - code.djangoproject.com/ticket/19783. I had never before visited the djangoproject.com website (not on this machine anyway), so what you are saying is not the reason I was pointed to the dev documentation. Pozdrav.Zamboanga
T
2

try :

python manage.py migrate

it will create all tables for "admin"

ps. it worked for me

Tallahassee answered 30/10, 2016 at 12:41 Comment(0)
E
1

In the console write: "manage.py syncdb", and it should work. it worked for me

Excreta answered 20/12, 2014 at 19:29 Comment(0)
R
0

I only recreated my virtualenv environment and reinstalled my required packages. Apparently I mistakenly installed django version 4.x.x, then downgraded to django version 3.x.x during project setup, and the downgrade wasn't successful. That solved my problem

Roadblock answered 25/4, 2022 at 13:14 Comment(0)
L
0

I got the same error below:

A server error occurred. Please contact the administrator.

And the error below:

zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key America/NewYork'

Because I set 'America/NewYork' to TIME_ZONE as shown below:

# "settings.py"

TIME_ZONE = 'America/NewYork'

So, I set 'America/New_York' to TIME_ZONE as shown below, then the error was solved:

# "settings.py"
                      # ↓ "_" is added
TIME_ZONE = 'America/New_York'
Lacteous answered 1/6, 2023 at 14:33 Comment(0)
C
0
$python -m pip install tzdata 

Install this package in the system, you will solve the error

Clow answered 2/8, 2023 at 9:40 Comment(1)
Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.Troth

© 2022 - 2024 — McMap. All rights reserved.