{"id":23586773,"url":"https://github.com/arkaniightt/curso_introdutorio_flask","last_synced_at":"2025-11-03T11:30:27.408Z","repository":{"id":257509985,"uuid":"854924590","full_name":"ArkaNiightt/Curso_Introdutorio_Flask","owner":"ArkaNiightt","description":"O repositório \"Curso Introdutório Flask\" é uma coleção de materiais e exemplos práticos voltados para iniciantes que desejam aprender a framework Flask, utilizado para o desenvolvimento de aplicações web em Python.","archived":false,"fork":false,"pushed_at":"2024-09-17T01:47:55.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-27T04:14:00.061Z","etag":null,"topics":["flask","flask-api","flask-application","flask-sqlalchemy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArkaNiightt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-10T02:04:24.000Z","updated_at":"2024-09-18T16:41:28.000Z","dependencies_parsed_at":"2024-09-17T05:49:11.410Z","dependency_job_id":null,"html_url":"https://github.com/ArkaNiightt/Curso_Introdutorio_Flask","commit_stats":null,"previous_names":["arkaniightt/curso_introdutorio_flask"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkaNiightt%2FCurso_Introdutorio_Flask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkaNiightt%2FCurso_Introdutorio_Flask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkaNiightt%2FCurso_Introdutorio_Flask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArkaNiightt%2FCurso_Introdutorio_Flask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArkaNiightt","download_url":"https://codeload.github.com/ArkaNiightt/Curso_Introdutorio_Flask/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239412445,"owners_count":19634016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","flask-api","flask-application","flask-sqlalchemy"],"created_at":"2024-12-27T04:14:02.281Z","updated_at":"2025-11-03T11:30:27.371Z","avatar_url":"https://github.com/ArkaNiightt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-commerce API com Flask\n\n\u003cimg style=\"width: 500px\" alt=\"\" src=\"https://i.imgur.com/YKwYE04.png\"\u003e\n\nUma aplicação de e-commerce simples desenvolvida com **Flask**, **Flask-SQLAlchemy** e **Flask-Login**, que inclui funcionalidades básicas de autenticação de usuários, gerenciamento de produtos e carrinho de compras. Esta aplicação usa hashing de senhas para garantir a segurança dos dados dos usuários e oferece uma API para a criação, atualização, exclusão e listagem de produtos.\n\n## Funcionalidades\n\n- **Autenticação de usuários**: Registre, faça login e logout de usuários.\n- **Gerenciamento de produtos**: Adicione, atualize, liste e exclua produtos.\n- **Carrinho de compras**: Relaciona usuários com produtos em um carrinho de compras simples.\n- **Segurança de senhas**: As senhas dos usuários são armazenadas utilizando hash seguro (usando `Werkzeug`).\n- **CORS habilitado**: Preparado para interações com frontend de domínios diferentes.\n\n## Tecnologias Utilizadas\n\n- **Flask**: Framework web Python.\n- **Flask-SQLAlchemy**: ORM para interagir com o banco de dados.\n- **Flask-Login**: Gerenciamento de sessão de usuários.\n- **Flask-CORS**: Habilita o suporte a CORS (Cross-Origin Resource Sharing).\n- **SQLite**: Banco de dados simples para armazenar dados localmente.\n- **Werkzeug**: Utilizado para hashing seguro de senhas.\n\n## Requisitos\n\n- Python 3.7+\n- pip (gerenciador de pacotes)\n\n## Instalação\n\n1. Clone o repositório:\n\n   ```bash\n   git clone \n   cd ecommerce-flask\n   pip install -r requirements.txt\n   ```\n\n## Estrutura do Projeto\n\n```plaintext\necommerce-flask/\n│\n├── app.py              # Código principal da aplicação\n├── keys.py             # Arquivo contendo a chave secreta do Flask\n├── requirements.txt    # Arquivo com as dependências do projeto\n├── README.md           # Documentação da aplicação\n├── models.py           # Definição dos modelos do banco de dados (User, Product, etc.)\n├── __init__.py         # Inicialização do pacote\n└── venv/               # Ambiente virtual (opcional)\n\n```\n\n# Flask Shell: Introdução ao Uso com SQLAlchemy\n\nEste arquivo fornece instruções sobre como utilizar o **Flask Shell** para interagir com a aplicação Flask, o banco de dados SQLAlchemy e o gerenciamento de senhas com hashing seguro.\n\n## Pré-requisitos\n\nCertifique-se de que as seguintes dependências estão instaladas:\n\n```bash\npip install Flask Flask-SQLAlchemy Flask-Login Flask-CORS Werkzeug\n```\n\n## Configuração do Flask Shell\n\nNo arquivo principal da aplicação (app.py), adicione o seguinte código para facilitar o uso do Flask Shell:\n\n```python\n@app.shell_context_processor\ndef make_shell_context():\n    return {\n        \"db\": db,\n        \"User\": User,\n        \"Product\": Product,\n        \"CartItem\": CartItem\n    }\n```\n\n## Iniciando o Flask Shell\n\nApós configurar o shell_context_processor, você pode iniciar o Flask Shell no terminal com o seguinte comando:\n\n```bash\nflask shell\n```\n\nsso abrirá uma sessão interativa do Flask onde você pode executar comandos para interagir com a aplicação e o banco de dados.\n\n## Exemplos no Flask Shell\n\nA seguir, estão alguns exemplos de como usar o Flask Shell para criar o banco de dados, adicionar usuários com hashing de senhas e verificar senhas.\n\n### 1. Criar o banco de dados\n\nPara criar o banco de dados e as tabelas definidas no seu modelo, execute o seguinte comando dentro do Flask Shell:\n\n```python\ndb.create_all()\n```\n\nIsso cria todas as tabelas baseadas nos modelos \u003ccode\u003eUser\u003c/code\u003e, \u003ccode\u003eProduct\u003c/code\u003e, e \u003ccode\u003eCartItem\u003c/code\u003e definidos no seu código.\n\n### 2. Criar um novo usuário com senha hash\n\nVocê pode criar um novo usuário e garantir que a senha seja armazenada de forma segura, utilizando o método set_password. Execute os seguintes comandos:\n\n```python\n# Criar um novo usuário\nuser = User(username=\"novo_usuario\")\nuser.set_password(\"minha_senha_secreta\")  # Definir a senha com hash\ndb.session.add(user)\ndb.session.commit()\n```\n\nIsso adiciona o novo usuário \u003ccode\u003enovo_usuario\u003c/code\u003e ao banco de dados, com a senha armazenada de forma segura como um hash.\n\n### 3. Verificar a senha hash\n\nPara verificar se a senha fornecida é válida, você pode utilizar o método \u003ccode\u003everify_password\u003c/code\u003e:\n\n```python\n# Buscar o usuário\nuser = User.query.filter_by(username=\"novo_usuario\").first()\n\n# Verificar a senha\nuser.verify_password(\"minha_senha_secreta\")  # Retorna True se a senha estiver correta\n```\n\nSe a senha estiver correta, o método \u003ccode\u003everify_password\u003c/code\u003e retornará \u003ccode\u003eTrue\u003c/code\u003e. Se a senha estiver incorreta, ele retornará \u003ccode\u003eFalse\u003c/code\u003e.\n\n### Sessão Completa no Flask Shell\n\nAqui está um exemplo completo de uma sessão no Flask Shell, desde a criação do banco de dados até a criação de um novo usuário e verificação da senha:\n\n```bash\n$ flask shell\n\u003e\u003e\u003e db.create_all()  # Criar o banco de dados\n\n\u003e\u003e\u003e # Criar um novo usuário\n\u003e\u003e\u003e user = User(username=\"novo_usuario\")\n\u003e\u003e\u003e user.set_password(\"minha_senha_secreta\")\n\u003e\u003e\u003e db.session.add(user)\n\u003e\u003e\u003e db.session.commit()\n\n\u003e\u003e\u003e # Buscar e verificar o usuário\n\u003e\u003e\u003e user = User.query.filter_by(username=\"novo_usuario\").first()\n\u003e\u003e\u003e user.verify_password(\"minha_senha_secreta\")  # Deve retornar True\nTrue\n\u003e\u003e\u003e user.verify_password(\"senha_incorreta\")  # Deve retornar False\nFalse\n```\n\n### Conclusão\n\nCom o \u003cstrong\u003eFlask Shell\u003c/strong\u003e, você pode interagir de maneira simples e direta com seu banco de dados, facilitando o processo de desenvolvimento e testes de sua aplicação. Experimente criar usuários, adicionar produtos e verificar funcionalidades usando o shell interativo do Flask.\n\n### O que foi incluído\n\n1. **Configuração do Flask Shell**: Explicação de como adicionar o `@app.shell_context_processor` no código para carregar automaticamente as instâncias de `db` e os modelos.\n2. **Iniciando o Flask Shell**: Comando para abrir a sessão do Flask Shell (`flask shell`).\n3. **Exemplos detalhados**:\n   - Criação do banco de dados com `db.create_all()`.\n   - Criação de um novo usuário utilizando o método `set_password` para armazenar a senha de forma segura.\n   - Verificação da senha utilizando o método `verify_password`.\n4. **Sessão completa** no Flask Shell, mostrando os comandos em sequência desde a criação do banco até a verificação de senha.\n\nCom esse arquivo `README.md`, você tem um guia passo a passo completo para interagir com o Flask Shell e testar suas funcionalidades de gerenciamento de senhas e banco de dados.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkaniightt%2Fcurso_introdutorio_flask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkaniightt%2Fcurso_introdutorio_flask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkaniightt%2Fcurso_introdutorio_flask/lists"}