Flask MVC Framework
Do you speak English? Read the README in English here
Este projeto implementa uma estrutura MVC (Model-View-Controller) baseada em Flask, facilitando o desenvolvimento de aplicações modulares e organizadas.
📌 Visão Geral
O framework fornece:
- Um
FlaskMVC
que encapsula a inicialização do Flask.
- Um
FlaskMVCBlueprint
para facilitar o registro e roteamento de controllers.
🚀 Instalação
-
Clone o repositório:
git clone https://github.com/celiovmjr/flask-mvc-core.git
cd flask-mvc-core
-
Crie um ambiente virtual e instale as dependências:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
-
Instale o pacote flask-mvc-core
:
pip install flask-mvc-core
📂 Estrutura do Projeto
.
├── app/
│ ├── controllers/
│ ├── models/
│ ├── views/
├── public/
├── routes/
│ ├── __init__.py
│ ├── web.py
│ ├── api.py
│ ├── console.py
├── main.py
├── flask_mvc_core.py
├── flask_mvc_blueprint.py
├── README.md
🛠 Componentes Principais
flask_mvc_core.py
Define a classe FlaskMVC
, que herda de Flask
e permite um registro centralizado de blueprints.
flask_mvc_blueprint.py
Define a classe FlaskMVCBlueprint
, uma extensão de Blueprint
que facilita o roteamento e carregamento de controllers.
🚀 Como Declarar Rotas
-
Definição de Rotas em Arquivos:
``:
from flask_mvc_blueprint import FlaskMVCBlueprint
web = FlaskMVCBlueprint("web")
web.get("home", "HomeController@index")
web.post("submit", "FormController@submit")
``:
from flask_mvc_blueprint import FlaskMVCBlueprint
users = FlaskMVCBlueprint("api", prefix="/api/users")
users.get("users", "UserController@index")
users.get("users/<int:id>", "UserController@show")
users.post("users", "UserController@store")
-
Registrando as Rotas no Servidor:
from waitress import serve
from routes.web import web
from routes.api import api
from flask_mvc_core import FlaskMVC
import logging
app = FlaskMVC(__name__, template_folder="app/views", static_folder="public")
app.register(web)
app.register(users)
if __name__ == "__main__":
logging.info("Server running on http://localhost")
serve(app, host="0.0.0.0", port=80, threads=10, _quiet=True)
🎨 Renderizando Views
Para renderizar uma view usando Jinja2, utilize o método response.render
:
from response import Response
def index(request, response: Response):
return response.render("home.html", {"title": "Página Inicial"})
A pasta padrão das views é /app/views
, e os arquivos estáticos estão localizados em /public
.
📜 Licença
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para mais detalhes.
Criado com ❤️ usando Flask 🚀