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

Gerando API automaticamente com Python, Django ...

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

Avatar for Leonardo Gregianin

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