Проблемы CSS с веб-приложением Flask
Я не могу заставить CSS корректно выводить - мои веб-страницы все не сработали.
Это моя ссылка во всех моих шаблонах. Что я делаю не так?
<link type="text/css" rel="stylesheet" href="/stylesheets/style.css"/>
Есть ли что-то особенное, что я должен делать с Flask, чтобы заставить его работать?
Я пытаюсь и меняю вещи примерно на полчаса, но, похоже, не все правильно.
Подводя итог: как вы делаете CSS с Flask - должен ли я иметь какой-либо специальный код на Python?
Ответы
Ответ 1
Вам не нужно ничего делать с Flask, чтобы заставить CSS работать. Возможно, вы style.css
в flask_project/stylesheets/
? Если они не настроены правильно, такие каталоги не будут обслуживаться вашим приложением. Посмотрите раздел " Статические файлы " в " Быстрый старт" для получения дополнительной информации об этом. Но, в общем, это то, что вы хотели бы сделать:
-
Переместите статические файлы, необходимые для project_root/static/
. Предположим, что вы переместили stylesheets/style.css
в project_root/static/stylesheets/style.css
.
-
+ Изменить
<link ... href="/stylesheets/style.css" />
в
<link ... href="{{ url_for('static', filename='stylesheets/style.css') }}" />
Это говорит парсеру шаблонов (Jinja2), чтобы сообщить Flask, чтобы найти настроенный статический каталог в каталоге проекта (по умолчанию static/
) и вернуть путь к файлу.
- Если вы действительно этого хотели, вы можете просто установить путь как
/static/stylesheets/style.css
. Но вы действительно не должны этого делать - использование url_for
позволяет вам переключать ваш статический каталог и все еще иметь дело с другими преимуществами.
И, как сказал @RachelSanders в своем ответе:
В настройках производства вы идеально обслуживаете свои статические файлы через apache или nginx, но это достаточно хорошо для dev.
Ответ 2
4 шага, чтобы сделать это (создавая много на некоторых других ответах здесь, предполагая, что у вас есть Flask, все настроено правильно):
1) Создайте статическую папку в папке вашего app
: [root_folder]/app/static/
2) Переместите весь свой статический контент (изображения, JavaScript, CSS и т.д.) В эти папки. Храните контент в соответствующих папках (не обязательно, просто аккуратно и более организованно).
3) Измените файл __init__.py
в папке app
чтобы иметь следующую строку:
app.static_folder = 'static'
Это позволит вашему приложению идентифицировать вашу static
папку и прочитать ее соответствующим образом.
4) В своем HTML настройте свои ссылки на файлы как таковые:
<link ... href="{{ url_for('static', filename='[css_folder]/[css-file].css') }}" />
Например, если вы вызываете свои стили таблиц CSS и стили файлов:
<link ... href="{{ url_for('static', filename='stylesheets/styles.css') }}" />
Это должно правильно настроить все. Удачи!
Ответ 3
Вам нужно создать папку под названием "static" внутри вашего приложения Flask, а затем поместить туда все ваши файлы CSS.
http://flask.pocoo.org/docs/quickstart/#static-files
В настройках производства вы идеально обслуживаете свои статические файлы через apache или nginx, но это достаточно хорошо для dev.
Ответ 4
В моем случае - сафари на macOS 10.13 - очистка кеша сделала трюк.
Ответ 5
Порядок обработчика может вызвать проблемы:
- url: /stylesheets static_dir: stylesheets
- url:/.* script: helloworld.application
будет работать вместо
- url:/.* script: helloworld.application
- url: /stylesheets static_dir: stylesheets
Ответ 6
введите описание изображения здесь
Привет, у меня возникла проблема с CSS, и я использую эту ссылку:
<head>
<title>Flask App</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
</head>
Я не понимаю, почему это не работает.
Спасибо !