Flask + Jinja2脚本导入

时间:2018-11-10 02:19:27

标签: javascript python flask server jinja2

在使用Flask及其导入脚本和样式表时的模板时遇到问题。我到处搜索了如何做,但没有一个解决我的问题。 这是我项目的结构: https://i.gyazo.com/f746c58499cbbafa11b023eecb316b15.png 这就是我定义Flask的配置的方式:

app = Flask(__name__,
            template_folder="../web/templates",
            static_folder="../web/static",
            static_url_path=''
)

这就是我导入脚本的方式:

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

这是我得到的味精:

  

Fallóla carga de con fuente“ http://localhost:5000/js/home.js”。

(基本上说它无法加载该脚本)

我已经阅读了Flask的快速入门指南。 我尝试在项目的根目录中创建一个“静态”文件夹,但未在配置中设置任何内容。试图在项目的任何地方更改静态文件夹。

有人可以帮我解决这个问题吗?我是Flask和Jinja的新手,但整天都在搜索,因此无法正常工作。

注意:除了.js和.css导入之外,模板的路径都可以正常工作,我的模板也可以正常工作。

1 个答案:

答案 0 :(得分:0)

您需要从<script src={{ url_for('static',filename='/js/home.js') }}.删除开头的'/'

因此将其更改为<script src={{ url_for('static',filename='js/home.js') }}.

您的项目结构应如下所示:

  • MyFlaskApp / templates / home.html
  • MyFlaskApp / static / js / home.js
  • MyFlaskApp / app.py

app.py

from flask import Flask, render_template

app = Flask(__name__)


@app.route("/")
def home():
    return render_template("home.html")


if __name__ == "__main__":
    app.run()

home.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src={{ url_for('static',filename='js/home.js') }}> </script>
</body>
</html>

home.js

alert("hello");