5

Google App Engine 用の Windows Launcher 開発環境を使用しています。

Django 1.1.2 ソースをダウンロードし、「django」サブディレクトリを展開して、アプリケーション ディレクトリ (app.yaml のピア) 内に配置しました。

各 .py ソース ファイルの先頭で、次のようにします。

import settings
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'

私のファイル settings.py (アプリ ディレクトリのルートにも存在します) で、次のようにします。

DEBUG = True
TEMPLATE_DIRS = ('html')
INSTALLED_APPS = ('filters')

import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')
from django.template import loader

はい、これは少しやり過ぎに見えますね。

私はdjango.templateのみを使用しています。私は、django の他の部分を明示的に使用していません。

ただし、断続的に次の 2 つのエラーのいずれかが発生します。

1) Django は、DJANGO_SETTINGS_MODULE が定義されていないと文句を言います。
2) Django は、common.html (私が他のテンプレートで拡張しているテンプレート) が存在しないと文句を言います。

95% の確率で、これらのエラーは発生せず、ランダムに発生し始めます。その状態になると、ローカルサーバーは「くさび」のように見え、再起動すると通常は修正されます。

これが発生する原因は何ですか?どうすればよいですか? どうすればデバッグできますか?

エラーからのトレースバックは次のとおりです。

Traceback (most recent call last):
  File "C:\code\kwbudget\edit_budget.py", line 34, in get
    self.response.out.write(t.render(template.Context(values)))
  File "C:\code\kwbudget\django\template\__init__.py", line 165, in render
    return self.nodelist.render(context)
  File "C:\code\kwbudget\django\template\__init__.py", line 784, in render
    bits.append(self.render_node(node, context))
  File "C:\code\kwbudget\django\template\__init__.py", line 797, in render_node
    return node.render(context)
  File "C:\code\kwbudget\django\template\loader_tags.py", line 71, in render
    compiled_parent = self.get_parent(context)
  File "C:\code\kwbudget\django\template\loader_tags.py", line 66, in get_parent
    raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
TemplateSyntaxError: Template u'common.html' cannot be extended, because it doesn't exist

そして、edit_budget.py は、まさに私が上に含めた行から始まります。

すべてのテンプレートはルート ディレクトリの「html」という名前のディレクトリにあり、「html/common.html」が存在します。テンプレート エンジンがそれらを見つけることはわかっています。
設定モジュールが何らかの形で適用されていないように見えます (それがテンプレートの検索パスに html を追加するためです)。

4

2 に答える 2

1

まず、django は以前よりも App Engine との互換性が大幅に向上していますが、2 つのプラットフォーム間には依然として大きな非互換性が存在します。つまり、django のストック コピーを appengine ディレクトリにダンプして、ボックス。物事は奇妙な方法でエラーになります。

2 つのプロジェクト間の互換性を改善することを目的としたプロジェクトが多数ありますが、最も顕著なのは app-engine-patch です。次の記事http://code.google.com/appengine/articles/app-engine-patch.htmlと、django タブの下の code.google.com/appengine/articles/ にある残りの記事を読むことを強くお勧めします.

特定の問題については、セットアップスクリプト内でこれを試すことができます:

#setup django environment
from django.core.management import setup_environ
import settings
setup_envion(settings)

これは、django が manage.py 内の環境をセットアップするために内部的に使用するものであり、スクリプト (アプリ エンジンなど) で使用するために django をセットアップするための受け入れられたベスト プラクティスです。

于 2010-07-06T08:59:48.497 に答える
0

私はまったく同じ問題を抱えており、それを回避できませんでした...ただし、Linuxワークステーションで実行している開発サーバーよりも実際のGAEの方がはるかに少ないことに気付きました.

于 2010-07-01T20:13:34.940 に答える