Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.

bcd29008/agenda-web-flask

Repository files navigation

Agenda de contatos com Flask, SQLAlchemy, Bootstrap e MySQL

Trata-se de um simples exemplo para demonstrar como fazer uma aplicação com o framework Flask e algumas de suas extensões, como SQLAlchemy, Bootstrap e WTForms.

Este projeto apresenta ainda uma ideia de organização seguindo o conceito Blueprints do Flask para construção de aplicações modulares.

No arquivo agenda_contatos/__init__.py é onde a aplicação é iniciada, os Blueprints são registrados, as extensões do Flask são ativadas. O menu de navegação Bootstrap é criado no arquivo agenda_contatos/home/__init__.py.

A aplicação tem o básico (CRUD), porém algumas partes da aplicação precisam ser implementadas.

Modelagem

O arquivo banco-dump.sql tem as instruções DDL e DML para criar o banco. A modelagem feita com o MySQL Workbench está disponível no arquivo modelagem.mwb.

diagrama ER

Para executar a aplicação

As configurações de acesso ao banco MySQL (usuário, senha, host, etc) devem ser ajustadas no arquivo .env.

python3 -m venv venv
source venv/bin/activate

# para instalar os pacotes. Só é necessário fazer isso uma única vez
pip install -r requirements.txt

# para executar a aplicação
python3 app.py

Para acessar a aplicação

No navegador web entre com o endereço http://localhost:5000. O banco conta com dois usuários para teste:

Usuário Senha
juca 1234
maria 1234

A senha desses usuários não foi armazenada em claro no banco de dados, mas sim o resumo criptográfico (hash) usando a função PBKDF2 provida pelo módulo wekzeug.security. Caso queira adicionar mais usuários no banco, então abra um console python3 e digite os seguintes comandos para gerar o hash da senha:

from werkzeug.security import generate_password_hash

senha = generate_password_hash('1234')

Basta agora armazenar o valor da variável senha no banco de dados.

Referências