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

标签 javascript python templates flask path

<分区>

我正在使用 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 路径,结果完全相同。

最佳答案

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

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

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

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

关于在 Flask render_template 期间使用相对路径找不到 Javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46349370/

相关文章:

python pandas对象类型dict获取值时出错

python - 向自定义 Django 管理更改列表添加复选框和删除操作

python - scrapy startproject不使用指定的TEMPLATES_DIR来生成项目settings.py

c++ - 模板 C++ 中的范围问题

javascript - <div> 双重扩展,html 和 <div> 构建问题

javascript - 为什么 setInterval 在我只分配它时启动?

javascript - 使用 Javascript DOM 在 Header 中附加元素并将其作为 Angular JS 中所有网页共享的通用 header

javascript - 使用 tab 启动点击 div 并输入

python - 使用 pandas 计算下一行的值作为前一行的函数

php - symfony 4 php模板位置