我知道这个问题之前已经被问过好几次了,但大部分问题都是很久以前问过的,旧的答案对我不起作用。
我有一个基于 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
但即使在此之后,我仍然看不到管理界面中加载的夹具数据,即似乎数据库没有初始化或者管理视图可能被严重破坏。但我会留到另一个问题~