GAE:Flask / webassets对{%extends“base.html”%}进行了预测

时间:2013-06-17 14:33:32

标签: google-app-engine flask webassets flask-assets

我正在尝试将我现有的烧瓶应用程序移植到谷歌应用引擎中。经过大量阅读和解决问题后,我遇到了一个我完全陷入困境的问题:

在我的本地环境中启动应用程序后,收到以下错误消息:

简短版:

{% extends "base.html" %}
OSError: [Errno 38] Function not implemented

如何才能实现此功能?它是flask / jinja2的一部分。

更长的版本:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request.  Either the server is overloaded or there is an error in the application.</p>
ERROR    2013-06-17 14:26:42,772 app.py:1306] Exception on / [GET]
Traceback (most recent call last):
  File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1687, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1360, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1358, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/kave/eclipse/F11/Engineering/flask/app.py", line 1344, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/kave/eclipse/F11/Engineering/f11_app/views.py", line 28, in index
    return render_template('index.html')
  File "/home/kave/eclipse/F11/Engineering/flask/templating.py", line 125, in render_template
    context, ctx.app)
  File "/home/kave/eclipse/F11/Engineering/flask/templating.py", line 107, in _render
    rv = template.render(context)
  File "/home/kave/eclipse/F11/Engineering/jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "/home/kave/eclipse/F11/Engineering/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/kave/eclipse/F11/Engineering/f11_app/templates/index.html", line 1, in top-level template code
    {% extends "base.html" %}
OSError: [Errno 38] Function not implemented
INFO     2013-06-17 14:26:42,799 server.py:593] default: "GET / HTTP/1.1" 500 291

知道这可能是什么?非常感谢

1 个答案:

答案 0 :(得分:4)

此错误的出现是因为Jinja不知道模板中使用的标记assets。第二个问题是项目应该在带有webasset python库的GAE上运行。但默认情况下它不起作用,因为webassets需要输出文件夹来存储压缩的静态文件,而且它是针对GAE托管逻辑的。

解决方案很简单:不要实时使用webassets并在上传到GAE之前压缩静态文件。