在 Flask render_template 期间未使用相对路径找到 Javascript 文件 [重复]
Posted
技术标签:
【中文标题】在 Flask render_template 期间未使用相对路径找到 Javascript 文件 [重复]【英文标题】:Javascript file not found using relative path during Flask render_template [duplicate] 【发布时间】: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路径,结果完全相同。
【问题讨论】:
使用<script src="url_for('static', filename='main_scripts.js')"></script>
,当你在子路由(即:`/user/info')时,相对路径会不同。
【参考方案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 抽出时间回答并链接到更大的参考源。我为这个答案搜索了很长时间,但我想我使用了错误的术语。以上是关于在 Flask render_template 期间未使用相对路径找到 Javascript 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Flask中的模板语言Jinja2及render_template
JS单击事件中的Flask中的render_template [重复]
在 Flask render_template 期间未使用相对路径找到 Javascript 文件 [重复]
Flask第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法
flask中的session,render_template()第二和参数是字典
Flask最强攻略 - 跟DragonFire学Flask - 第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法