Failed to login to django admin page with valid username and password

EDITED:

I hosted a site on amazon AWS with a domain ( www.abc.com ).

First: I tried to log in to the django admin site, but redirected it again to the same page without showing any errors (Note: username and password are correct)

Second: After successful registration, try logging into the django homepage with a username and password: It will redirect to the same login page by adding the next keyword between the URLs.

http://www.abc.com/login/?next=/employee/jcbdfvdhdfhvhdfsvsdhfhb-super-admin/home/dashboard/

Found after researching servers:

I stopped all applications like wsgi, suprervisorctl, ngnix etc. and then run the following command on the ec2 aws (Terminal) console

 python manage.py   xxx.xx.xx.xx:8000 

. xxx.xx.xx.xx - (www.abc.com) IP

django-admin, .

-, jjano? . .

, , .

: django

EDITED settings.py:

import sys, os
from os.path import abspath, basename, dirname, join, normpath

### from 2 scoops of django
# Normally you should not import
# ANYTHING from Django directly into
# your abc_settings, but
# ImproperlyConfigured is an
# exception.
from django.core.exceptions \
    import ImproperlyConfigured

msg_get ="Set the %s environment variable"
msg_unset ="The %s environment variable not defined"

def get_env_variable(var_name):
    try:
        return os.environ[var_name]
    except KeyError:
        error_msg = msg_get % var_name
        raise ImproperlyConfigured(error_msg)

def set_env_variable(var_name, value_str):
    os.environ[var_name] = value_str

def unset_env_variable(var_name):
    try:
        del os.environ[var_name]
    except KeyError:
        error_msg = msg_unset % var_name
        raise ImproperlyConfigured(error_msg)
### end snippet

ATOMIC_REQUESTS = True

########## PATH CONFIGURATION

# Absolute filesystem path to this Django project directory.
DJANGO_ROOT = dirname(dirname(dirname(abspath(__file__))))
CONFIG_ROOT = dirname(dirname(abspath(__file__)))

import sys


sys.path.append(normpath(join(DJANGO_ROOT, 'apps')))

# Site name.
SITE_NAME = basename(DJANGO_ROOT)
SITE_ID = 1
# Absolute filesystem path to the top-level project folder.
SITE_ROOT = dirname(DJANGO_ROOT)

# Add all necessary filesystem paths to our system path so that we can use
# python import statements.
sys.path.append(SITE_ROOT)
#sys.path.append(normpath(join(DJANGO_ROOT, 'apps')))
#sys.path.append(normpath(join(DJANGO_ROOT, 'libs')))
#########/# END PATH CONFIGURATION

########## SECURITY CONFIGS
def set_secret_key_env():
    # Generating a SECRET_KEY. Will be auto-generated the first time this file is interpreted.
    try:
        os.environ['SECRET_KEY']
    except KeyError:
        import random
        os.environ['SECRET_KEY'] = \
            ''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)') for i in range(50)])

#tocheck - is it ok to uncomment this or should we use this to generate a secret key and set it normally,
#tocheck - in production on heroku for ex?
set_secret_key_env()
SECRET_KEY = get_env_variable('SECRET_KEY')

BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = "redis://"
CELERY_TRACK_STARTED = True
########## END CELERY CONFIGURATION
########## DJANGO-TEMPLATED-EMAIL CONFIGURATION
TEMPLATED_EMAIL_BACKEND = 'templated_email.backends.vanilla_django.TemplateBackend'
TEMPLATED_EMAIL_TEMPLATE_DIR = 'communication/email/' #use '' for top level template dir, ensure there is a trailing slash
TEMPLATED_EMAIL_FILE_EXTENSION = 'email'
########## END DJANGO-TEMPLATED-EMAIL CONFIGURATION
########## MANAGER CONFIGURATION
# Admin and managers for this project. These people receive private site
# alerts.
#tothink - should this be different for different environments
ADMINS = (
    ('Nirmal', 'nighggngh@abc.com'),
    ('Harsha', 'jjjjjjjgarkkwal@abc.com'),
)
########## URL CONFIGURATION
ROOT_URLCONF = '%s.urls' %SITE_NAME
########## END URL CONFIGURATION

MANAGERS = ADMINS
########## END MANAGER CONFIGURATION

########## GENERAL CONFIGURATION
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/abc_settings/#allowed-hosts
ALLOWED_HOSTS = ['www.abc.com']

TIME_ZONE = 'Asia/Kolkata'

WSGI_APPLICATION = 'abc.wsgi.application'

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

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


USE_I18N = False

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
########## END GENERAL CONFIGURATION
########## EMAIL CONFIGURATION
#todo - should probably go into environment variables
#todo - get actual domain email etc
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.abc.com'
EMAIL_PORT = 587
#change this to proper email with hems domain
EMAIL_HOST_USER = 'abc@abc.com'
EMAIL_HOST_PASSWORD ='websupport2307'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL  = 'abc@abc.com'
#EMAIL_USE_TLS = True
# ########## END EMAIL CONFIGURATION

########## MEDIA CONFIGURATION
# Absolute filesystem path to the directory that will hold user-uploaded files.
MEDIA_ROOT = normpath(join(DJANGO_ROOT, 'media')).replace('\\','/')

# URL that handles the media served from MEDIA_ROOT.
MEDIA_URL = '/media/'
########## END MEDIA CONFIGURATION
AUTHENTICATION_BACKENDS = ('custom.backends.EmailOrUsernameModelBackend','django.contrib.auth.backends.ModelBackend')

STATIC_ROOT = normpath(join(DJANGO_ROOT, 'final_static'))

# URL prefix for assets files.
STATIC_URL = '/static/'

# URL prefix for admin assets files -- CSS, JavaScript and images.
ADMIN_MEDIA_PREFIX = '/assets/admin/'

# Additional locations of assets files.
STATICFILES_DIRS = (
    normpath(join(DJANGO_ROOT, 'static')),
    )

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

TEMPLATE_CONTEXT_PROCESSORS =('django.contrib.messages.context_processors.messages',
                              'django.contrib.auth.context_processors.auth',
                              "django.core.context_processors.request"
                                )

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    #'django.template.loaders.eggs.Loader',
    )

# Directories to search when loading templates.
TEMPLATE_DIRS = (
    normpath(join(DJANGO_ROOT, 'templates')),
    normpath(join(DJANGO_ROOT, 'templates/Home_Page')),
    normpath(join(DJANGO_ROOT, 'templates/Marketplace')),
    normpath(join(DJANGO_ROOT, 'templates/Organisation')),
    normpath(join(DJANGO_ROOT, 'templates/Organisation_Role')),
    normpath(join(DJANGO_ROOT, 'templates/base')),
    normpath(join(DJANGO_ROOT, 'templates/external')),
    normpath(join(DJANGO_ROOT, 'templates/certificates')),
    normpath(join(DJANGO_ROOT, 'templates/password_reset')),
    normpath(join(DJANGO_ROOT, 'templates/support_dashboard')),
    )

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',
  #  'django.contrib.sessions.backends.signed_cookies',
    'custom.subdomain.SubdomainMiddleware', #middleware for subdomain
    )


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    #    # Admin panel and documentation.

    'django.contrib.admin',
    #   'django.contrib.admindocs',

    # South migration tool.
    'south',
    # Celery task queue.
    'djcelery',
    'apps.certificates',
    'apps.account_subscription',
    'apps.common_ds',
    'apps.location',
    'apps.communication,
    'apps.transanction_history',
    'rest_framework',
    'apps.external_user',
    'gunicorn',
    #'notification'
    #django extensions (recommended by 2 scoops of django)
 )

 import djcelery
djcelery.setup_loader()

CELERY_IMPORTS = (
    'apps.communication.functionality.email',
    'apps.organisation_roles.functionality.parse_employees_from_file',
)


LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': '/home/ubuntu/logs/abc/logger.log',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['file'],
            'level': 'INFO',
            'propagate': True,
        },
    },
}


AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_SAVE_EVERY_REQUEST = True
SESSION_COOKIE_AGE = 86400 # sec
SESSION_COOKIE_DOMAIN = '.abc.com'
SESSION_COOKIE_NAME = 'DSESSIONID'
SESSION_COOKIE_SECURE = False



DEBUG = True
TEMPLATE_DEBUG = DEBUG
LOGIN_URL = '/login/'
########## END DEBUG CONFIGURATION



########## DATABASE CONFIGURATION
#todo should go into environment variables
import dj_database_url
import os
if not os.environ.has_key('DATABASE_URL'):
    os.environ['DATABASE_URL'] = 'postgres://abc:abc@abc-db.us-east-1.rds.amazonaws.com/dev_abc_db'

DATABASES = {
    'default': dj_database_url.config(default=os.environ['DATABASE_URL'])
+4
3

. Gunicorn , , . , , memcached redis. . , :)

+2

, ...

#AUTHENTICATION_BACKENDS = ('custom.backends.EmailOrUsernameModelBackend','django.contrib.auth.backends.ModelBackend')

#   'apps.communication,

#AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
#SESSION_EXPIRE_AT_BROWSER_CLOSE = True
#SESSION_SAVE_EVERY_REQUEST = True
#SESSION_COOKIE_AGE = 86400 # sec
#SESSION_COOKIE_DOMAIN = '.abc.com'
#SESSION_COOKIE_NAME = 'DSESSIONID'
#SESSION_COOKIE_SECURE = False

:

1: INSTALLED_APPS 'apps.communication

INSTALLED_APPS = (
   'django.contrib.auth',
   # -- snip --
   'apps.communication,
)

2: AUTHENTIOCATION_BACKENDS. .

3: .

4: "django.contrib.auth.backends.ModelBackend", , "django.contrib.auth" INSTALLED_APPS. ( )

+2

" ", ( Django Admin ). , , , , - cookie... ( ).

, .

+1

Source: https://habr.com/ru/post/1536947/


All Articles