Google App Engine yaml文件配置

时间:2012-12-02 02:35:17

标签: python google-app-engine directory app.yaml

我在使用Google App Engine的图片,html文件和javascript时遇到问题。我的应用程序文件夹中有一个名为static的文件夹。在静态文件夹中,我有3个其他名为'images','html'和'javascript'的文件夹。我的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在文件夹中使用文件的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

如果您要在HTML中使用模板系统,则不希望将其声明为static_dir,原因是静态文件存储在与应用程序文件不同的文件系统中,所以他们将无法渲染。当您使用os.path.dirname(__file__).....时,您正在应用程序的文件系统中查找文件,该文件系统与您指定的static目录不同。所以首先要尝试的是删除:

- url: /html
  static_dir: static/html

来自你的处理程序。然后,这将查找您的应用程序文件系统,并(希望:)找到它。你的图像处理程序看起来很好,所以我先尝试一下,看看它是否有所作为。

答案 1 :(得分:1)

使用Jinja,您可以渲染一个写HTML的模板。这不是静态服务。

在你的app.yaml中你使用:static / images或static / html 但在你的代码中你使用另一条道路!!没有静态文件夹。

因此,如果您有一个静态文件夹,并且该文件夹中有一个文件夹图像:

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')))