1

Google App Engine で画像、html ファイル、javascript を使用すると問題が発生します。アプリケーションフォルダーに static というフォルダーがあります。static フォルダーには、「images」、「html」、「javascript」という 3 つのフォルダーがあります。私の app.yaml のハンドラー部分は次のとおりです。

handlers:
- url: /html
  static_dir: static/html

- url: /javascript
  static_dir: static/javascript

- url: /images
  static_dir: static/images

- url: /.*
  script: index.app

で画像にアクセスしようとしましたが、

self.response.out.write('<img src="images/image.png">')

そして、jinja2 を使用して html をレンダリングします。

jinja_environment = jinja2.Environment(autoescape=True,
                    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'html')))

template = jinja_environment.get_template('index.html')
self.response.out.write(template.render(template_values))

jinja のテンプレートが見つからず、イメージも見つからないというエラーが表示されます。アップロードを使用して Google App Engine でファイルを使用するには、これが正しい方法だと思っていましたが、明らかに間違っています。

Google App Engine でフォルダ内のファイルを使用するにはどうすればよいですか?

4

2 に答える 2

1

HTML でテンプレート システムを使用する場合は、それを として宣言したくありませんstatic_dir。その理由は、静的ファイルはアプリケーション ファイルとは別のファイル システムに格納されるため、レンダリングできないからです。 . を使用するos.path.dirname(__file__).....と、指定したディレクトリとは異なるアプリケーションのファイルシステムでファイルを探しstaticます。したがって、最初に試すことは、次のものを削除することです。

- url: /html
  static_dir: static/html

あなたのハンドラから。これにより、アプリケーションのファイルシステムが検索され、(うまくいけば:))それが見つかります。画像ハンドラーは問題ないように見えるので、最初にそれを試して、違いがあるかどうかを確認します.

于 2012-12-02T03:13:29.640 に答える
1

Jinja を使用して、HTML を記述するテンプレートをレンダリングします。それは静的な提供ではありません。

app.yaml では static/images または static/html を使用しますが、コードでは別のパスを使用します!! 静的フォルダーなし。

したがって、フォルダー static があり、そのフォルダーにフォルダー イメージがある場合:

self.response.out.write('<img src="/images/image.png">')

そしてあなたのローダー:

jinja_environment = jinja2.Environment(autoescape=True,
                    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__),'static', 'html')))
于 2012-12-02T03:20:41.153 に答える