我正在使用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”,结果完全相同。
答案 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
...