そこで、GAE で簡単な「ウォームアップ」アプリを作成しました。ここで、より複雑なディレクトリ構造を持つものを構築したいと考えています。次のようなもの:
siteroot/
models/
controllers/
controller1/
controller2/
...
templates/
template1/
template2/
...
..等。コントローラーは、リクエストを処理する Python モジュールになります。次に、関連付けられたフォルダーに (Django スタイルの) テンプレートを配置する必要があります。私が見たほとんどのデモ アプリは、次のようにテンプレート パスを解決します。
path = os.path.join(os.path.dirname(__file__), 'myPage.html')
...__ file __ プロパティは、現在実行中のスクリプトに解決されます。したがって、上記の例では、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はこれに対する答えを持っているようですが、完全なDjangoアプリを作成してGAE用に変更するよりも、GAE APIに固執したいと思います。
アプリは Google の無限サーバー ファーム上に存在するため、ハードコードされたものはすべてスターターではないと思います。では、より良い方法は何ですか?