Импорт скриптов Flask + Jinja2 - PullRequest
0 голосов
/ 10 ноября 2018

У меня проблема при использовании 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 голосов

вам нужно удалить начальный '/' из <script src={{ url_for('static',filename='/js/home.js') }}.

поэтому измените его на <script src={{ url_for('static',filename='js/home.js') }}.

структура вашего проекта должна выглядеть следующим образом:

  • MyFlaskApp / шаблоны / home.html
  • MyFlaskApp / статический / 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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...