0

更新: 問題が見つかりました。テンプレートがサブディレクトリにある場合でも、HTML ファイルの静的ルールは依然としてテンプレートと一致していました。それらに一致しないようにルールを変更すると、アプリケーションがファイルにアクセスできるようになります。

Google AppEngine アプリケーションを作成しています。私は Go 言語を使用していますが、それが適切かどうかはわかりません。別のテンプレート ファイルでテンプレートを使用したい。したがって、アプリケーションはテンプレート ファイルを読み取る必要があります。これはローカルでは機能しますが、アプリを GAE にアップロードした後、template.ParseFiles() を呼び出すと「そのようなファイルやディレクトリはありません」というメッセージが表示されます。

したがって、テンプレート ファイルが正しい方法でアップロードされるように、何らかの形でテンプレート ファイルがアプリケーション ファイルであることを示す必要があると考えています。app.yaml にあるため、テンプレート ファイルが静的ファイルとしてアップロードされたのではないかと考えました。

- url: /(.*\.html)
  static_files: \1
  upload: .*\.html

そのため、それらを独自のディレクトリに移動しました。しかし、それは違いはありませんでした。次のように app.yaml にスクリプト ルールのアップロード ディレクティブを追加してみました。

- url: /.*
  script: _go_app
  upload: templates/.*

しかし、それは許されなかったようです。GAE アプリケーションからテンプレート ファイル (または任意のデータ ファイル) にアクセスする方法を教えてください。

ありがとう!

4

3 に答える 3

1

プロジェクトディレクトリ内のすべてのファイルが自動的にアップロードされます。

アプリがそれらにアクセスする必要がある場合(テンプレートを使用している場合はこれが当てはまります)、それらを静的としてマークすることはできません。これが最初の解決策が失敗する理由です。

2番目の試行は、アップロードがURL記述のメンバーではないため、機能しません。

この場合、アプリをデプロイするだけで、ファイルが自動的にアップロードされ、アプリで利用できるようになります(テンプレートへのフルパスを作成するには、プロジェクトのベースパスを取得する必要がある場合があります)。

于 2012-09-26T20:29:31.690 に答える
1

またはディレクトリにない場合、ファイルは自動的にアップロードされます。App Engine ドキュメントのファイルのスキップに関するセクションを参照してください。App Engine はそのようなディレクトリとファイルを静的リソースとして扱い、静的リソースはアプリケーションとは別に提供されます。static_dirstatic_files

通常、アプリケーション コードから静的リソースにアクセスすることはできません。テンプレートを他の静的リソースと同じディレクトリに配置する必要がある場合は、このapplication_readable設定を使用して、そのようなリソースをアプリからもアクセスできるようにすることができます。

ただし、お気づきのように、静的リソース パスにマップされていないアプリ内の場所にテンプレートを配置できます。それはおそらく正しいことです。

于 2014-08-05T00:51:12.200 に答える