Обслуживание статических файлов в производстве Flask - PullRequest
0 голосов
/ 11 октября 2019

У меня есть папка static в моей папке app, и там у меня есть папки js, css, images и т. Д.

Я ссылаюсь на них в своих шаблонах следующим образом:

<script src="/static/js/main.js"></script>

и работает локально. Но когда приложение публикуется в производство, я получаю 404 для всех статических файлов. Я новичок в колбе, так что, думаю, я неправильно их обслуживаю. У меня нет папки static, установленной в качестве назначенной папки статических файлов, в приложении - выполняется ли она автоматически, если она называется «статической», или мне нужно установить ее в коде?

Мой проектструктура:

app/
├── static/
│   └── js/
|   |__ css/
├── templates/
│   └── index.html
└── __init__.py
application.py

application.py:

from app import create_app

application = create_app()

init .py:

from flask import Flask
from config import BaseConfig

def create_app():
    server = Flask(__name__)
    server.config.from_object(BaseConfig) # this is just for the secret key
    return server

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Flask автоматически добавляет статическое представление, которое берет путь относительно каталога $YOUR_APP/static и обслуживает его.

Обычно вы включаете файлы js / css в свои шаблоны следующим образом:

{{ url_for('static', filename='main.js') }}
0 голосов
/ 11 октября 2019

Первая часть решения была ответом Берта выше, в котором описывалось, как правильно ссылаться на активы из шаблонов.

Другая часть, которую мне не хватало, была такой:

server = Flask(__name__, static_url_path="", static_folder="static")

вместо того, чтоУ меня было раньше:

server = Flask(__name__)

Добавление static_url_path и static_folder исправило проблему для меня.

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