我知道这个问题之前已经问过几次,但大部分问题都是很久以前问过的,旧的答案对我来说并不适用。无法用有效的用户名和密码登录到django管理员视图
我有一个基于django-nonrel的应用程序,它使用dbindexer作为后端并部署在GAE上。我能够查看我的应用程序的主页,不需要登录。
但是,当我尝试登录到管理视图,它提供了“错误的用户名/密码”
在我的本地开发服务器,如果我使用“manage.py runserver命令”,然后我才能够登录管理页面上。但是,如果我通过GAE启动程序运行我的应用程序,那么我无法登录。
我可以收集GAE启动程序使用“manage.py runserver”中的不同django。 那么,我怎样才能使GAE(在启动器以及部署服务器上)使用django-nonrel?
其他详情:
app.yaml does NOT include "django" library.
settings.py
DATABASES['native'] = DATABASES['default']
DATABASES['default'] = {'ENGINE': 'dbindexer', 'TARGET': 'native'}
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',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'djangotoolbox',
'autoload',
'dbindexer',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
'djangoappengine',
'testapp',
)
urls.py
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
)
更新1 ::
作为@dragonx指出的那样,我需要运行 python manage.py remote createsuperuser
和创建用户。
在本地服务器上,运行'manage.py syncdb'时,它会填充数据库并初始化数据,其中还包括创建超级用户。我在'fixtures'目录中使用了'initial_data.yaml',并通过syncdb命令自动读取。
那么,有什么办法可以在服务器端运行“syncdb”吗?不知怎的,我认为这是在部署时自动发生,就像'manage.py runserver'发生在我自己身上,我不需要手动运行应用程序。如果我运行manage.py remote syncdb
,就脱口而出以下错误:
google.appengine.api.datastore_errors.NeedIndexError: no matching index found.
<<ed>>some stack trace<<ed>>
The suggested index for this query is:
- kind: django_content_type
properties:
- name: app_label
- name: name
更新2:
而不是使用appcfg.py update site
命令,如果你使用python manage.py deploy
从您的应用程序目录,它运行远程服务器上的灯具没有。知道什么在做什么
manage.py remote loaddata initdata.yaml
也可以用来初始化远程数据库。
但即使在这之后,我仍然没有看到管理界面中加载的灯具数据,也就是说它似乎没有初始化数据库,或者管理视图可能被严重破坏。但我保存另一个问题〜
哦!你的意思是'manage.py syncdb'永远不会在服务器上运行?我还使用一个'initial_data.yaml'内部fixtures目录,该目录自动运行以填充数据库并初始化数据。我如何在服务器端运行'syncdb'? (更新后的问题) – 2013-03-02 18:30:47
是的,syncdb只在本地数据库上运行。AFAIK,当你运行'python manage.py deploy'时,它在本地运行syncdb。我不知道如何在远程运行syncdb。试试'python manage.py远程syncdb'?小心远程加载灯具。它可以工作,但是如果你的夹具包含实体ID,请注意。如果您指定自己的ID,则数据存储库不会知道它们已被使用,并且可能会在稍后自动生成相同的ID。 – dragonx 2013-03-05 17:51:54