Использование аргумента root_path во Flask - PullRequest
0 голосов
/ 27 сентября 2018

Я пытался следовать этому учебнику , в котором показано, как изменить расположение статической папки и папки шаблона в корневом каталоге.Однако я не могу заставить пример работать.Приложение работает нормально, но возвращает 404, когда ищет таблицу стилей «GET /static/style.css HTTP / 1.1» 404. Поэтому кажется, что оно может найти шаблон, но не таблицу стилей.

Здравствуйте!пример мира здесь и ниже.Должен ли я использовать root_path, а может быть instance_path или template_folder и static_folder?

api_files
  static
    style.css
  templates
    index.html
api.py

api.py из колбы для импорта Flask, render_template, url_for

# here we can set a different root path
app = Flask(__name__, root_path='api_files/')

@app.route('/')
def index():
    """Render home page."""
    return render_template('index.html')  # we can render templates as usual

if __name__ == '__main__':
    app.run(debug=True)

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
    <link rel= "stylesheet" type= "text/css" href= {{ url_for('static', filename='style.css') }}>
</head>
<body>
  hello world
</body>
</html>

style.css

body {
  color: red;
}

1 Ответ

0 голосов
/ 30 июля 2019

Я следовал этому самому уроку и столкнулся с той же проблемой. Этот комментарий переполнения стека правильный - вы передали абсолютный путь в root_path.Если вы этого не сделаете, templates будет работать - но содержание static определенно не будет.

Мои файлы выглядят так:

# │   hello.py
# │
# └───web-content
#     ├───static
#     │       style.css
#     │
#     └───templates
#             welcome.html

и hello.py сейчасвыглядит так:

import os
from flask import Flask, render_template

# important - pass an absolute path to root_path
app = Flask(__name__, root_path=os.path.join(os.getcwd(), 'web-content'))

@app.route('/page/<string:page_name>')
def render_static(page_name):
    return render_template(f'{page_name}.html')

if __name__ == "__main__":
    app.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...