6.2. Usando Views baseadas em Funções (FBV)

Usando Views baseadas em Funções, a maneira de ser fazer é meio manual, mas é bastante simples usar os resultados da mesma maneira.

6.2.1. Listar

from folder_project.clients import api_client

...

def get_orders(request):
  response = api_client.order.orders.list()
  template = 'fbv/list.html'
  context = {"object_list": response.as_obj().results}
  return render(request, template, context)

Nota

The usage example assumes that the endpoint /order/orders/ Waiting the response {‘count’: , ‘next’: None, ‘previous’: None, ‘results’: []}

6.2.2. Detalhe

from folder_project.clients import api_client

...

def get_order(request, pk):
  response = api_client.order.orders.get(id=pk)
  template = 'fbv/detail.html'
  context = {"object": response.as_obj()}
  return render(request, template, context)

Nota

O Exemplo assume que o endpoint é /order/orders/

6.2.3. Criar

from folder_project.clients import api_client

...

def create_order(request, pk):
  template = 'fbv/form.html'

  form = TestForm(request.POST or None)
  if form.is_valid():
      response = api_client.order.orders.create(data=form.cleaned_data)
      return redirect('fbv:index')

  context = {"form": form}
  return render(request, template, context)

Nota

O Exemplo assume que o endpoint é /order/orders/

6.2.4. Atualizar

from folder_project.clients import api_client

...

def update_order(request, pk):
  template = 'fbv/form.html'
  response = api_client.order.orders.get(id=pk)

  form = TestForm(request.POST or None, initial=response.as_dict())
  if form.is_valid():
      response = api_client.order.orders.update(id=pk, data=form.cleaned_data, partial=False)
      return redirect('fbv:index')

  context = {
    "object": response.as_obj(),
    "form": form
   }
  return render(request, template, context)

Nota

O Exemplo assume que o endpoint é /order/orders/

6.2.5. Deletar

from folder_project.clients import api_client

...
def delete_order(request, pk):
    template = 'fbv/delete.html'
    response = api_client.order.orders.get(id=pk)
    if request.method == 'POST':
        api_client.order.orders.delete(id=pk)
        return redirect('fbv:index')
    context = {"object": response.as_obj()}
    return render(request, template, context)

Nota

O Exemplo assume que o endpoint é /order/orders/