【问题标题】:GAE jinja2 unable to import custom javascript fileGAE jinja2 无法导入自定义 javascript 文件
【发布时间】:2013-10-11 00:40:22
【问题描述】:

我正在从事自己的 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>

对于“一些 src”,我试过了:

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

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

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

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

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

谢谢

【问题讨论】:

  • 我希望/javascript/myjavascript.js 可以在这里工作......我猜测包含不起作用,因为它位于静态目录中。静态文件应该是从不同的服务器提供的,因此您的实例可能无法找到它们——即我不认为静态文件与常规文件一起存储。
  • @mgilson 是正确的,默认情况下无法从应用程序代码中访问静态文件,但是这是可配置的:developers.google.com/appengine/docs/python/config/…

标签: javascript python google-app-engine jinja2


【解决方案1】:

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

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

来自Google docs

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

【讨论】:

    【解决方案2】:

    在你的 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目录在父目录中...

    【讨论】:

    • 我试过了,这会阻止我所有其他的东西工作......它阻止我从其他模板继承
    【解决方案3】:

    这是我的 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 相关联。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 2011-12-23
      • 1970-01-01
      • 2021-10-16
      • 2019-02-25
      • 1970-01-01
      相关资源
      最近更新 更多