我正在研究自己的GAE项目,
我正在尝试将自定义javascript文件包含到我的某个模板文件中。
目录结构如下:
我正在尝试从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
任何人都可以帮我解决发生的事情吗?
谢谢
答案 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相关联。