You are not logged in.

#1 2012-11-03 03:57:12

OakRaider4Life
Member
Registered: 2012-02-08
Posts: 98

[Solved] Django, you make me want to pull my hair out.

Not so long ago, I started a forum post playing with the possibility of creating my own python web backend. My delusions of grandeur died quickly when I started mucking around for information on the HTTP protocol, and realized I just had no desire to deal with it.

So, I wised up and decided to start playing with Django. I wasn't let down, as Django has proven to be much more minimalist than I originally thought, leaving me all the freedom I was seeking.

Then I started setting up my first app, and now I want to go ballistic. I haven't done a single thing with Django, except setup my config file, run a syncdb (which didn't even work without adding a line to the config to fix some ridiculous locality error it kept giving me while trying to create the super user), activate the admin panel, and attempt to log in.

Django simply refuses my admin login credentials. I've tried deleting my (sqlite) database and starting over several times (I thought at first that it might have been enforcing a password policy it wasn't telling me about, but this doesn't seem to be the case), trying several different username/pass combinations, and yes, google. Where no one has anything useful to say on the subject.

I entered the shell and pulled the User object from the database, and can confirm that my user is in fact in the database and the user does have a password (don't know if it got the password right, since its hashed). I don't even know what other troubleshooting steps I can take at this point. I apologize that I am sorely lacking in information, but I simply don't know how to acquire more.

Any help at all is very appreciated!

[EDIT: I might mention that I'm testing using the Django test server, not an apache instance
-- Creating a second superuser with ./manage.py createsuperuser successfully creates another super user, who is also denied login at the admin panel.]

Last edited by OakRaider4Life (2012-11-03 05:42:57)

Offline

#2 2012-11-03 04:20:28

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 13,405

Re: [Solved] Django, you make me want to pull my hair out.

Maybe you could post your *.wsgi, settings.py, urls.py and views.py files for critique.


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
You assume people are rational and influenced by evidence.  You must not work with the public much. -- Trilby
----
How to Ask Questions the Smart Way

Offline

#3 2012-11-03 04:35:22

OakRaider4Life
Member
Registered: 2012-02-08
Posts: 98

Re: [Solved] Django, you make me want to pull my hair out.

File contents:

settings.py

import os; os.environ['LANG'] = 'en_US.UTF-8'        # This was the added fix for the locality error
# Django settings for djangoPlay project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@example.com'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '/home/james-arch/Temp/djangoPlay-db/djangoPlay.db',                      # 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/Los_Angeles'

# 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 = '43c3+8$%sv$z8$5)si5e)(6^h2h(6ffw9i%dn6d_xw-9_%o&(f'

# 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 = 'djangoPlay.urls'

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'djangoPlay.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.
)

AUTHENTICATION_BACKENDS = (        # I added this after some googling around, mostly out of desperation to try *something*
    'django.contrib.auth.backends.ModelBackend', 
)

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',
)

# 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,
        },
    }
}

urls.py

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'djangoPlay.views.home', name='home'),
    # url(r'^djangoPlay/', include('djangoPlay.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
     url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),
)

wsgi.py

"""
WSGI config for djangoPlay project.

This module contains the WSGI application used by Django's development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.

Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.

"""
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoPlay.settings")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

Last edited by OakRaider4Life (2012-11-03 04:37:52)

Offline

#4 2012-11-03 04:52:05

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 13,405

Re: [Solved] Django, you make me want to pull my hair out.

I have a hunch that the server you are running is not finding the admin js, css and img directories. 

On my system, I took the shortcut of creating a symlink in the media directory:
lrwxrwxrwx 1 ewaller users      66 Oct 17 20:37 admin -> /usr/lib/python2.7/site-packages/django/contrib/admin/static/admin

The admin pages must be able to find these files.  I would suggest you run your page under a web developer debugger (such as firebug) to look for errors.  I'll bet it is not finding the admin js files.

Last edited by ewaller (2012-11-03 04:52:27)


Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
You assume people are rational and influenced by evidence.  You must not work with the public much. -- Trilby
----
How to Ask Questions the Smart Way

Offline

#5 2012-11-03 05:12:10

OakRaider4Life
Member
Registered: 2012-02-08
Posts: 98

Re: [Solved] Django, you make me want to pull my hair out.

Running firebug returned no errors, but I can fairly confidently assert that the css directory is being found, as the admin page is properly styled.

Offline

#6 2012-11-03 05:16:03

OakRaider4Life
Member
Registered: 2012-02-08
Posts: 98

Re: [Solved] Django, you make me want to pull my hair out.

Ok, progress of sorts. Accessing the Django app using ./manage.py runserver instead of testserver let the login go off without a hitch. I guess the problem then was with wsgi on the testserver? A strange issue, but I'm just happy to have a working development app at this point.

Offline

#7 2012-11-15 18:04:12

rickeyski
Member
Registered: 2011-01-27
Posts: 25

Re: [Solved] Django, you make me want to pull my hair out.

Just as an FYI, testserver requires a fixture to be used as data, see the docs, https://docs.djangoproject.com/en/dev/r … re-fixture, and is used for unit tests rather than development.  Since you weren't passing a fixture the testserver had no data.  runserver is the proper command for development.

Offline

Board footer

Powered by FluxBB