2015-08-13 1 views
1

J'ai une application Django que j'essaye d'obtenir à Django-nonrel pour que je puisse l'obtenir sur GAE. Le problème est cependant que de nombreuses fois ai-je essayé de créer super-utilisateur pour l'interface d'administration encore quand je fais syncdb, il me montre:Django-nonrel avec le moteur de l'application django ne peut pas accéder à l'interface d'administration

Vous venez d'installer le système d'authentification de Django, ce qui signifie que vous n'avez aucune super-utilisateurs définis.

chaque fois.En outre, je ne suis jamais capable de me connecter à mon interface d'administration par le super-utilisateur créé. Aussi, quand je fais ceci:

python manage.py shell 
 
>>> from django.contrib.auth.models import User 
 
>>> User.objects.all() 
 
[]

SO aucun utilisateur ne créé il semble. J'ai essayé de chercher la solution et et avait un coup d'oeil à quelques questions comme celles-ci:

django-nonrel and the admin page

et quelques autres. Cela n'a pas aidé non plus. Je voudrais mentionner que je suis en utilisant la version téléchargée zip de django-nonrel 1.6 et djangoappengine en les copiant dans mon répertoire de projet

Juste pour référence mon fichiers de settings.py et app.yaml sont les suivantes :

Settings.py:

# Django settings for flogin project. 
 

 
# Initialize App Engine and import the default settings (DB backend, etc.). 
 
# If you want to use a different backend you have to remove all occurences 
 
# of "djangoappengine" from this file. 
 
from djangoappengine.settings_base import * 
 
import sys 
 
sys.path.insert(0, 'libs') 
 

 

 

 
ADMINS = (
 
    # ('Your Name', '[email protected]'), 
 
) 
 

 
MANAGERS = ADMINS 
 

 
# Activate django-dbindexer for the default database 
 
DATABASES['default'] = {'ENGINE': 'dbindexer', 'TARGET': DATABASES['default']} 
 

 
AUTOLOAD_SITECONF = 'indexes' 
 

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

 
# 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 = False 
 

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

 
# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
 
# trailing slash. 
 
# Examples: "http://example.com/media/", "http://media.example.com/" 
 
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: "/var/www/example.com/static/" 
 
STATIC_ROOT = '' 
 

 
# URL prefix for static files. 
 
# Example: "http://example.com/static/", "http://static.example.com/" 
 
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 = 'some key not shown here' 
 

 
# 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 = (
 
    # This loads the index definitions, so it has to come first 
 
    'autoload.middleware.AutoloadMiddleware', 
 

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

 
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', 
 
    'oauth2_provider', 
 
    'social.apps.django_app.default', 
 
    'rest_framework_social_oauth2', 
 
    'flogin', 
 
    'djangoappengine', 
 
    # Uncomment the next line to enable the admin: 
 
    'django.contrib.admin', 
 
    # Uncomment the next line to enable admin documentation: 
 
    'django.contrib.admindocs', 
 
    'djangotoolbox', 
 
    'autoload', 
 
    'dbindexer', 
 

 
    # djangoappengine should come last, so it can override a few manage.py commands 
 
    
 
) 
 

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

app.yaml

application: flogin 
 
version: 1 
 
runtime: python27 
 
api_version: 1 
 
threadsafe: yes 
 

 
builtins: 
 
- remote_api: on 
 

 
inbound_services: 
 
- warmup 
 

 
handlers: 
 
- url: /_ah/queue/deferred 
 
    script: djangoappengine.deferred.handler.application 
 
    login: admin 
 

 
- url: /_ah/stats/.* 
 
    script: djangoappengine.appstats.application 
 

 
- url: /media/admin 
 
    static_dir: django/contrib/admin/media 
 
    expiration: '0' 
 

 
- url: /.* 
 
    script: djangoappengine.main.application

+0

Je voudrais aussi mentionner que je aussi essayé changer le DATABASES ci-dessus ['default'] des paramètres.py de ce qui est indiqué ci-dessus à: BASES = { 'par défaut': { 'MOTEUR': 'dbindexer', 'TARGET': 'GAE', }, 'Gae': { 'MOTEUR': 'djangoappengine.db', }, } Ne fonctionnait pas non plus. –

+0

http://stackoverflow.com/a/32629024/1075066 –

+0

Face au même problème, avez-vous trouvé une solution? –

Répondre

1

Ok, j'ai eu le même problème et j'ai trouvé une raison pour laquelle ça se passe. Lorsque vous exécutez manage.py avec n'importe quelle commande sauf 'runserver' djangoappengine crée une base de données en mémoire pour cela et je pense que c'est un bug dans djangoappengine ici, donc aucune modification n'est faite à la base de données locale pour 'syncdb' ou 'shell' ', btw j'utilise la version 1.7.1 de djangoappengine. Lorsque vous exécutez la commande 'runserver', elle crée d'abord une base de données en mémoire, puis la recrée avec une base locale appropriée.

Alors, comment le réparer? La façon simple est de patcher djangoappengine/db/stubs.py,

Dans la méthode def activate_stubs(self, connection): remplacer

self.activate_test_stubs(connection)

avec

from .base import DATASTORE_PATHS self.activate_test_stubs(connection, DATASTORE_PATHS['datastore_path'])