0

この質問は以前に何度か尋ねられたことは知っていますが、ほとんどの質問はずっと前に尋ねられたものであり、古い回答は私にとってはうまくいきませんでした。

バックエンドとして 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 sitepython manage.py deploy
manage.py remote loaddata initdata.yaml

しかし、この後も、フィクスチャ データが管理インターフェイスに読み込まれていません。つまり、データベースが初期化されていないか、管理ビューがひどく壊れている可能性があります。しかし、それは別の質問のために取っておきます〜

4

1 に答える 1

2

実行するpython manage.py runserverと、ローカル マシンでローカル dev サーバーが起動します。ローカル マシンに独自の開発データストアがあります。ある時点で、ローカル データベースに管理者ユーザーを作成しました。

App Engine にデプロイすると、Google のサーバーでコードが実行されます。そこにはデータストアがありますが、開発サーバー上のデータは共有されません。本番データストアにも管理者ユーザーを作成する必要があります。試す:

python manage.py remote createsuperuser

于 2013-03-02T17:30:25.497 に答える