【问题标题】:Javascript file not found using relative path during Flask render_template [duplicate]在 Flask render_template 期间未使用相对路径找到 Javascript 文件 [重复]
【发布时间】:2018-03-03 03:03:15
【问题描述】:

我正在使用 Python 和 Flask 构建一个简单的交互网络应用程序。 使用 Chrome 在 localhost:5000 上进行测试。

我有一个模板和一个关联的 javascript 文件位于: ./templates/main.html ./templates/main_scripts.js

main.html 模板包含如下脚本文件:

<script src="main_scripts.js"></script>

当我使用这个 Python 代码渲染模板时...

return render_template('main.html', session_id=session_id, title=sess.title)

main.html 页面已渲染,但我在 Chrome 控制台中收到此错误:

Failed to load resource: the server responded with a status of 404 (NOT FOUND)

当错误发生时,使用 Chrome 控制台检查未找到的“main_scripts.js”的位置,浏览器认为它正在尝试从我的虚拟环境中加载它:

./env/Scripts/main_scripts.js

...而不是来自与模板相同的目录。

我似乎无法强制渲染的模板了解它的脚本文件所在的位置。到目前为止,我已经尝试过像“./main_scripts.js”甚至“/appdir/main_scripts.js”这样的src路径,结果完全相同。

【问题讨论】:

  • 使用&lt;script src="{{url_for('static', filename='main_scripts.js')}}"&gt;&lt;/script&gt;,当你在子路由(即:`/user/info')时,相对路径会不同。

标签: javascript python templates flask path


【解决方案1】:

您首先需要创建一个与templates 文件夹处于同一级别的static 文件夹。然后创建一个js 子文件夹并将js文件放入该文件夹中。现在您可以在 html 中调用它。
这是“pythonic”的方式:

<script src="{{ url_for('static', filename="js/main_scripts.js") }}"></script>

正如官方 Flask 文档中的 here 所述,您的项目结构应如下所示:

/yourapplication
    yourapplication.py
    /static
        /css
            style.css
        /js
            main_scripts.js
    /templates
        main.html
        ...

【讨论】:

  • 感谢 Espoir 抽出时间回答并链接到更大的参考源。我为这个答案搜索了很长时间,但我想我使用了错误的术语。
猜你喜欢
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多