私はGAEを使って簡単な "ウォームアップ"アプリを作った。今私はより複雑なディレクトリ構造で何かを構築したいと思います。Google App Engineで相対パスを見つけるにはどうすればよいですか?
siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...
などの行に沿ったものです。コントローラはリクエストを処理するPythonモジュールになります。彼らは、関連付けられたフォルダに(Djangoスタイルの)テンプレートを配置する必要があります。私はこのような決意テンプレートパスを見てきたデモ・アプリケーションのほとんどは:
path = os.path.join(os.path.dirname(__file__), 'myPage.html')
を... __ファイル__プロパティは、現在実行中のスクリプトに解決されます。したがって、上記の例では、Pythonスクリプトがcontrollers/controller1 /で実行されている場合、 'myPage.html'は同じディレクトリ(controllers/controller1/myPage.html)に解決されます。 Pythonコードとテンプレート。私は一緒にハッキングしてきた
ソリューションをハック...感じている:
base_paths = os.path.split(os.path.dirname(__file__))
template_dir = os.path.join(base_paths[0], "templates")
だから、私は、現在実行中のスクリプトのパスの最後の要素をオフにつむとにテンプレートディレクトリを追加しています新しいパス。私がPythonのパスを解決するために見た他の(非GAE固有の)ソリューションはかなり重いようです(パスをリストに分割してそれに応じて操作するなど)。 Djangoは答えがあるようですが、私はGAE APIに固執し、Djangoアプリケーションを完全に作成し、GAEに変更します。
Googleの無限のサーバーファーム上にアプリが生存しているため、ハードコードされているものは初心者ではないものと想定しています。では、より良い方法は何ですか?