Um aplicativo de usuários feito em Django REST Framework, nesse aplicativo eu modifiquei o modelo padrão de user do Django, adicionando campos personalizados e login com email e senha, também desenvolvi funcionalidades para a API e testes automatizados, para conferir tudo leia o README abaixo!

Overview

App de Usuários

Esse é um app de usuários personalizado feito em Django REST Framework, nele eu modifiquei o model padrão de users do Django, adicionando campos como CPF, data de nascimento e outros. Também exclui o campo username, deixando o sistema de login apenas com campos de email e senha, criei funcionalidades relacionadas a conta do usuário, como criar e ativar a conta, visualizar, atualizar e deletar seus dados, com envios de e-mails para ativação da conta e redefinição de senha usando Celery e RabbitMQ(Message Broker), e todas as funcionalidades com testes automatizados. O processo login(obtenção do token de acesso) e refresh do token é feito com a lib simple-jwt.

O que tem na API?

  • Modelo de usuário personalizado
  • Login com email e senha usando JWT
  • Funcionalidades da conta do usuário
  • CRUD de endereços do usuário
  • Testes automatizados para todas funcionalidades

Arquivo ENV necessário para rodar o projeto

Se você desejar clonar esse repositório e rodar na sua máquina para testar, terá de adicionar um arquivo .env na pasta raiz com as seguintes variáveis:

OBS: Sugiro que crie uma venv para evitar problemas.

SECRET_KEY=
EMAIL_HOST= 
EMAIL_HOST_USER= 
EMAIL_HOST_PASSWORD=
EMAIL_PORT=

Você pode rodar o comando a seguir para criar um .env de exemplo.

python contrib/env_gen.py

E como rodar o projeto?

Depois de clonar o repositório, criar e ativar a venv e configurar devidamente as variáveis ambientes, siga os passos para rodar e testar o projeto:

Instale o Message Broker RabbitMQ no seu computador, no meu caso, fiz no Windows, porém o processo pode ser diferente em outros sistemas operacionais, para isso siga os passos no site oficial: https://www.rabbitmq.com/download.html

Após instalado, verifique a url de acesso a ele e modifique caso necessário no arquivo settings.py.

Para iniciar o celery, utilize o seguinte comando no terminal:

celery -A drf_users_app worker -l info -P eventlet

# Instalar as libs necessárias
pip install -r requirements.txt

python manage.py migrate

python manage.py runserver

# Para rodar os testes
python manage.py test

Ao rodar a aplicação entre em http://localhost:8000/api/users/create/

Preencha e salve os dados para criar um usuário, detalhe: por padrão o usuário é inativo e não pode logar no sistema, somente será possível após confirmar o e-mail.

Em seguida, você receberá um e-mail com link de ativação, seria o link do frontend da aplicação, pegue somente o token da url e envie para /api/users/activate com o body {"token": token} e você receberá um status code 200, o que quer dizer que sua conta foi ativada no sistema.

Obs: sugiro que use Postman ou Insomnia.

Agora com sua conta já ativada, você poderá fazer o login pra ter acesso as funcionalidades, pra isso envie no body da requisição o email e senha para a rota /api/users/login/ .

A resposta será um token de refresh e um token de acesso. Com o token de acesso você poderá mandar no header das requisições que necessitam de autenticação com o esquema de Bearer token, exemplo: GET api/users/me/ se você estiver autenticado receberá como retorno seus dados de cadastro.

Pronto! o projeto já deve estar no ar e funcionando corretamente.

Swagger

No endereço http://localhost:8000/swagger/

você tem uma doc feita com drf-yasg que te mostra todos os endpoints do sistema.

swagger.png

MailHog

Se quiser rodar MailHog via Docker. Você pode receber os e-mails localmente através dele.

docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog
Owner
Thiago Ferreira
Pythonist, Back-end Developer with Django, improving my skills and learning more every day.
Thiago Ferreira
Eazytraining - Simple application to show how to query API from webapp

student-list Eazytraining - Simple application to show how to query API from webapp This repo is a simple application to list student with a webserver

⚡Christophe FREIJANES 2 Nov 15, 2021
A small project in Python + Flask to demonstrate how to create a REST API

SmartBed-RESTApi-Example This application is an example of how to build a REST API. The application os a mock IoT device, simulating a Smart Bed. Impl

Rares Cristea 6 Jan 28, 2022
REST API with Flask. No data persistence.

Flask REST API Python 3.9.7 The Flask experience, without data persistence :D First, to install all dependencies: python -m pip install -r requirement

Luis Quiñones Requelme 1 Dec 15, 2021
Restful API framework wrapped around MongoEngine

Flask-MongoRest A Restful API framework wrapped around MongoEngine. Setup from flask import Flask from flask_mongoengine import MongoEngine from flask

Close 525 Jan 01, 2023
Turn your API made with Django REST Framework(DRF) into a GraphQL like API.

Turn your API made with Django REST Framework(DRF) into a GraphQL like API.

Yezy Ilomo 575 Jan 05, 2023
A small repository of projects built in my course, REST APIs with Flask and Python.

A small repository of projects built in my course, REST APIs with Flask and Python.

Teclado 1k Jan 05, 2023
DRF-extensions is a collection of custom extensions for Django REST Framework

Django REST Framework extensions DRF-extensions is a collection of custom extensions for Django REST Framework Full documentation for project is avail

Gennady Chibisov 1.3k Dec 28, 2022
Introduction to Django Rest Framework

Introduction to Django Rest Framework This is the repository of the video series Introduction to Django Rest Framework published on YouTube. It is a s

Simple is Better Than Complex 20 Jul 14, 2022
DSpace REST API Client Library

DSpace Python REST Client Library This client library allows Python 3 scripts (Python 2 probably compatible but not officially supported) to interact

The Library Code GmbH 10 Nov 21, 2022
Django REST API with React BoilerPlate

This is a setup of Authentication and Registration Integrated with React.js inside the Django Templates for web apps

Faisal Nazik 91 Dec 30, 2022
Generate Views, Serializers, and Urls for your Django Rest Framework application

DRF Generators Writing APIs can be boring and repetitive work. Don't write another CRUDdy view in Django Rest Framework. With DRF Generators, one simp

Tobin Brown 332 Dec 17, 2022
Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.

drf-yasg - Yet another Swagger generator Generate real Swagger/OpenAPI 2.0 specifications from a Django Rest Framework API. Compatible with Django Res

Cristi Vîjdea 3k Jan 06, 2023
Mlflow-rest-client - Python client for MLflow REST API

Python Client for MLflow Python client for MLflow REST API. Features: Minimal de

MTS 35 Dec 23, 2022
Simplified REST API to get stickers from Snap

Snap Sticker kit REST API Simplified REST API to get stickers from Snap 💻 Instructions Search stickers Request: url = "https://sticker-kit-horizon733

Dishant Gandhi 1 Jan 05, 2022
Scaffold django rest apis like a champion 🚀

scaffold django rest apis like a champion 🚀

Abdenasser Elidrissi 133 Jan 05, 2023
FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI framework, high performance, easy to learn, fast to code, ready for production Documentation: https://fastapi.tiangolo.com Source Code: https:

Sebastián Ramírez 53.1k Jan 06, 2023
The Web API toolkit. 🛠

🛠 The Web API toolkit. 🛠 Community: https://discuss.apistar.org 🤔 💭 🤓 💬 😎 Documentation: https://docs.apistar.com 📘 Requirements: Python 3.6+

Encode 5.6k Dec 27, 2022
Integrate GraphQL into your Django project.

Graphene-Django A Django integration for Graphene. 💬 Join the community on Slack Documentation Visit the documentation to get started! Quickstart For

GraphQL Python 4k Dec 31, 2022
A minimalistic manga reader for desktop built with React and Django

smanga A minimalistic manga reader/server for serving local manga images on desktop browser. Provides a two-page view layout just as reading a physica

Padam Upreti 13 Sep 24, 2022
Django-rest-auth provides a set of REST API endpoints for Authentication and Registration

This app makes it extremely easy to build Django powered SPA's (Single Page App) or Mobile apps exposing all registration and authentication related functionality as CBV's (Class Base View) and REST

Tivix 2.4k Dec 29, 2022