在Flask render_template期间使用相对路径找不到Javascript文件

时间:2017-09-21 16:57:17

标签: javascript python templates flask path

我正在使用Python和Flask构建一个简单的交互式Web应用程序。 使用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

...而不是与模板在同一目录中。

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

1 个答案:

答案 0 :(得分:4)

你需要在与模板floder和js subfloder相同的级别创建一个静态floder,并将js放在那个floder中并在你的html中调用它,这里是pythonic方式:

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

正如关于应用程序结构的烧瓶官方文档here所解释的那样,您的项目结构应如下所示:

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