Flask static files getting 404
Set _static_folder
location against Flask.
app = Flask(__name__)app._static_folder = <path to to your static directory>
I've just had the same problem and eventually solved it like that:
https://stackoverflow.com/a/29521067/303114
Edit:Main parts that i did to solve it -
Project Structure:
server.py:
from server.AppStarter import AppStarterimport osstatic_folder_root = os.path.join(os.path.dirname(os.path.abspath(__file__)), "client")app = AppStarter()app.register_routes_to_resources(static_folder_root)app.run(__name__)
AppStarter.py:
from flask import Flask, send_from_directoryfrom flask_restful import Api, Resourcefrom server.ApiResources.TodoList import TodoListfrom server.ApiResources.Todo import Todoclass AppStarter(Resource): def __init__(self): self._static_files_root_folder_path = '' # Default is current folder self._app = Flask(__name__) # , static_folder='client', static_url_path='') self._api = Api(self._app) def _register_static_server(self, static_files_root_folder_path): self._static_files_root_folder_path = static_files_root_folder_path self._app.add_url_rule('/<path:file_relative_path_to_root>', 'serve_page', self._serve_page, methods=['GET']) self._app.add_url_rule('/', 'index', self._goto_index, methods=['GET']) def register_routes_to_resources(self, static_files_root_folder_path): self._register_static_server(static_files_root_folder_path) self._api.add_resource(TodoList, '/todos') self._api.add_resource(Todo, '/todos/<todo_id>') def _goto_index(self): return self._serve_page("index.html") def _serve_page(self, file_relative_path_to_root): return send_from_directory(self._static_files_root_folder_path, file_relative_path_to_root) def run(self, module_name): if module_name == '__main__': self._app.run(debug=True)
i'm just trying this stuff out for the first time so you can check out my project progress on my repo in github:https://github.com/danfromisrael/TodoApp-Flask-Angular
I solved mine by adding the following;
app._static_folder = ''
below
app = Flask(__name__)
and you get
app = Flask(__name__)app._static_folder = ''