Как обслуживать create-реакции-приложение от Flask? - PullRequest
1 голос
/ 15 января 2020

Как я могу обслуживать результаты работы create-реакции-приложения через Flask?

После npm run build это примерно мое дерево папок:

src/
├── service/
│   └── app.py
└── content/
    ├── static
    │   ├── css
    │   │   └── many css files...
    │   ├── js
    │   │   └── many js files...
    │   └── media
    │       └── some images...
    ├── index.html
    ├── service-worker.js
    └── manifest.json

Это сервер код:

app = Flask(__name__, template_folder='../content', static_folder='../content')

@app.route('/')
def home():
    return flask.render_template('index.html')

@app.route('/static/<path:path>')
def static_files(path):
    return flask.send_from_directory('../content/static', path)

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

Основной html, index.html успешно обслуживается. Так же как и все файлы в content/static/.

Однако файлы в content/ (кроме index.html) вообще не доставляются (ошибка 404, не найдена).

1 Ответ

1 голос
/ 15 января 2020

Предполагая, что вы просто пытаетесь обслуживать кучу статических c файлов, это, вероятно, может быть сделано более эффективно с помощью веб-сервера, такого как nginx.

Однако, если вы сделаете w sh для используйте Flask, самый простой способ сделать это с существующей структурой каталогов:

from flask import Flask, render_template

app = Flask(__name__,
            static_url_path='', 
            static_folder='../content')

@app.route('/')
def index_redir():
    # Reached if the user hits example.com/ instead of example.com/index.html
    return render_template('index.html')

По существу, все данные в каталоге contents/ статически обслуживаются в конечной точке / (благодаря static_url_path устанавливается на пустую строку)

Конечно, есть также функция index_redir, которая будет отображать index.html, если пользователь действительно нажмет example.com/ вместо example.com/index.html.

Это также избегает определения функции static_files из вашего кода, так как flask имеет функцию для обслуживания стандартных файлов c из коробки.

Опять же, этот материал, вероятно, лучше подходит для nginx в производственная среда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...