GAE jinja2无法导入自定义javascript文件

时间:2013-10-04 05:37:01

标签: javascript python google-app-engine jinja2

我正在研究自己的GAE项目,

我正在尝试将自定义javascript文件包含到我的某个模板文件中。

目录结构如下:

  • 主要目录
  • 的app.yaml
  • main.py
  • 模板
    • base.html文件
  • JavaScript的
    • myjavascript.js

我正在尝试从base.html中包含myjavascript.js

在我的app.yaml中,我指定:

-url: /javascript
 static_dir: javascript

并在base.html中,

<script src = 'some src'> </script>

对于'some src',我试过了:

../javascript/myjavascript.js
/javascript/myjavascript.js
javascript/myjavascript.js

但它总是给我404(找不到文件)错误。

我也尝试过Jinja2的{%include /javascript/myjavascript.js%}并且它给了我

IOError:[Errno 13]文件无法访问GAE

任何人都可以帮我解决发生的事情吗?

谢谢

3 个答案:

答案 0 :(得分:2)

处理程序的顺序很重要。确保javascript处理程序位于main处理程序之前。例如:

handlers:
- url: /javascript
  static_dir: javascript
- url: .*
  script: main.app

来自Google docs

  

模式按照它们在app.yaml中显示的顺序从上到下进行评估。模式与URL匹配的第一个映射是用于处理请求的映射。

答案 1 :(得分:1)

在您的yaml文件中尝试此操作

- url: /(.*\.(gif|png|jpg|ico|js|css|ttf|pdf))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css|ttf|pdf))

而不是:

-url: /javascript
 static_dir: javascript

它将包含管道分隔的所有文件,但不会降级您的应用

如果你的base.html在你的模板目录中并且你的javascript目录与模板(你的情况)在同一个目录中,你应该使用../javascript/myjavascript.js路径,因为“..”停留对于父目录,对于base.html文件,javascript目录位于父目录...

答案 2 :(得分:0)

这是我的app.yaml文件之一:

application: name-of-app
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico
- url: /(.*\.(gif|png|jpg|ico|js|css|ttf|pdf))
  static_files: \1
  upload: (.*\.(gif|png|jpg|ico|js|css|ttf|pdf))
- url: .*
  script: name-of-app.app

libraries:
- name: webapp2
  version: latest                                                                      
- name: jinja2                                                                  
  version: latest                                                               
- name: markupsafe                                                              
  version: latest   

尝试将其与app.yaml相关联。