Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gerando API automaticamente com Python, Django e Django Rest Framework

Gerando API automaticamente com Python, Django e Django Rest Framework

Vamos gerar uma API automaticamente com toda estrutura de models, views, serializers e rotas a partir do banco de dados para aplicações legadas ou API em produção pra quem deseja migrar para Django REST Framework, sem usar código!

Utilizamos Python, Django e Django Rest Framework.

Os slides da palestra e o projeto exemplo está no Github: https://github.com/leogregianin/pyjamas-conf-2019

Playlist de todas as palestras do PyJamas Conf 2019: https://www.youtube.com/playlist?list=PLiwrSoq9tHkHKIevwB2gLbZLxedUpd7Wt

Playlist de todas as palestras do PyJamas Conf 2019 nos canais próprios:
https://www.youtube.com/playlist?list=PLiwrSoq9tHkGv_xv1qO6s-5FZyLXbzbOT

Leonardo Gregianin

December 14, 2019
Tweet

More Decks by Leonardo Gregianin

Other Decks in Programming

Transcript

  1. Quem sou? Natural de Santa Catarina Atualmente em Cuiabá, Mato

    Grosso Comecei a programar na faculdade em 2006 https://github.com/wikimedia/pywikibot https://pychess.org https://gnome.org
  2. ---------------- ----------------- ---------------- | empresa | | cliente | |

    produto | ----------------- ----------------- ---------------- | codigo pk | | codigo pk | | codigo pk | | nome | | nome | | nome | ----------------- ----------------- ----------------- ------------------------- | venda | ------------------------- | empresa pk fk | | cliente pk fk | | produto pk fk | | quantidade | | valor_unitario | ------------------------- Estrutura do banco de dados
  3. • Ativar o ambiente virtual: pipenv shell • Instalar pacotes:

    pipenv install django djangorestframework psycopg2 • Criar o app django django-admin startproject config . python .\manage.py startapp api Code Code Code
  4. • Configurar o settings.py 1 - Incluir ‘api’ nos INSTALLED_APPS

    Exemplo: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'api', ] Code Code Code
  5. • Configurar o settings.py 2 - Configurar o database Exemplo:

    DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': '127.0.0.1', 'PORT': '5432', } } Code Code Code
  6. • Criar os models.py: 1 - Executar: python .\manage.py inspectdb

    > .\api\models.py 2 - Corrigir o encoding do arquivo models.py para UTF-8 Referência do inspectdb: https://docs.djangoproject.com/en/3.0/howto/legacy-databases/ Code Code Code
  7. • Registrar das classes no admin admin.py: from django.contrib import

    admin from django.apps import apps app = apps.get_app_config('api') for model_name, model in app.models.items(): admin.site.register(model) Code Code Code
  8. • Sincronizar o estado do database: python .\manage.py migrate •

    Criar o usuário do admin do Django: python .\manage.py createsuperuser • Aplicar as alterações no database: python .\manage.py makemigrations • Executar e rodar o servidor: python .\manage.py runserver Code Code Code
  9. • Clonar e instalar o repositório DRF-Generators: Referência: https://github.com/Brobin/drf-generators Clonar:

    git clone https://github.com/Brobin/drf-generators.git Instalar: python .\drf-generators\setup.py install Code Code Code
  10. • Configurar o settings.py: INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes',

    'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'api', 'rest_framework', 'drf_generators', ] Code Code Code
  11. • Gerar as views, serializers e urls da API: 1

    - python .\manage.py generate api --format modelviewset 2 - python manage.py generate api --format viewset 3 - python manage.py generate api --format apiview 4 - python manage.py generate api --format function Code Code Code
  12. • Adicionar as rotas da API: Arquivo: config/urls.py: import include

    path('', include('api.urls')), Code Code Code
  13. • Executar e rodar o server: python .\manage.py runserver •

    Acessar: http://127.0.0.1:8000 Code Code Code