この質問は以前に何度か尋ねられたことは知っていますが、ほとんどの質問はずっと前に尋ねられたものであり、古い回答は私にとってはうまくいきませんでした。
バックエンドとして dbindexer を使用し、GAE にデプロイされている django-nonrel ベースのアプリがあります。ログインを必要としないアプリのホームページを表示できます。
しかし、管理ビューにログインしようとすると、「間違ったユーザー名/パスワード」が表示されます
ローカル開発サーバーで「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
しかし、この後も、フィクスチャ データが管理インターフェイスに読み込まれていません。つまり、データベースが初期化されていないか、管理ビューがひどく壊れている可能性があります。しかし、それは別の質問のために取っておきます〜