我在使用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和
渲染一个htmljinja_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在文件夹中使用文件的正确方法是什么?
答案 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')))