8
respostas

Return JSON

Como se faz pra retornar a consulta do banco, como JSON ?

8 respostas

Oi Thiago, tudo bem ?

Você consegue fazer algo assim :

from django.http import JsonResponse
return JsonResponse({'foo':'bar'})

Assim correto ?

from django.shortcuts import render, redirect
from perfis.models import Perfil
from django.http import JsonResponse
# Create your views here.
def index(request):
    perfis = Perfil.objects.all()

    return JsonResponse({'perfis':perfis})

Tá dando o seguinte error:

TypeError at /

[<Perfil: Perfil object>, <Perfil: Perfil object>, <Perfil: Perfil object>] is not JSON serializable

Request Method:     GET
Request URL:     http://localhost:8000/
Django Version:     1.7.4
Exception Type:     TypeError
Exception Value:     

[<Perfil: Perfil object>, <Perfil: Perfil object>, <Perfil: Perfil object>] is not JSON serializable

Exception Location:     /usr/lib/python2.7/json/encoder.py in default, line 184
Python Executable:     /usr/bin/python
Python Version:     2.7.6
Python Path:     

['/home/thiagod/Projetos/Python/Django/connectedin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
 '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

Server time:     Fri, 9 Feb 2018 15:08:37 +0000

Acho que pode fazer

def index(request):
    perfis = Perfil.objects.all()

    return JsonResponse({perfis})
from django.shortcuts import render, redirect
from perfis.models import Perfil
from django.http import JsonResponse
# Create your views here.
def index(request):
    perfis = Perfil.objects.all()

    return JsonResponse({perfis})
TypeError at /

In order to allow non-dict objects to be serialized set the safe parameter to False

Request Method:     GET
Request URL:     http://localhost:8000/
Django Version:     1.7.4
Exception Type:     TypeError
Exception Value:     

In order to allow non-dict objects to be serialized set the safe parameter to False

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/http/response.py in __init__, line 494
Python Executable:     /usr/bin/python
Python Version:     2.7.6
Python Path:     

['/home/thiagod/Projetos/Python/Django/connectedin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
 '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

Server time:     Fri, 9 Feb 2018 15:27:03 +0000

Olá Thiago, acho que você pode fazer dessa maneira

from django.shortcuts import render, redirect
from perfis.models import Perfil
from django.http import JsonResponse
# Create your views here.
def index(request):
    perfis = Perfil.objects.all()

    return JsonResponse(perfis, safe=False)

Ainda tá

TypeError at /

[<Perfil: Perfil object>, <Perfil: Perfil object>, <Perfil: Perfil object>] is not JSON serializable

Request Method:     GET
Request URL:     http://localhost:8000/
Django Version:     1.7.4
Exception Type:     TypeError
Exception Value:     

[<Perfil: Perfil object>, <Perfil: Perfil object>, <Perfil: Perfil object>] is not JSON serializable

Exception Location:     /usr/lib/python2.7/json/encoder.py in default, line 184
Python Executable:     /usr/bin/python
Python Version:     2.7.6
Python Path:     

['/home/thiagod/Projetos/Python/Django/connectedin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
 '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

Server time:     Thu, 15 Feb 2018 13:09:29 +0000

Oi Thiago, tudo bem?

Acho que você consegue utilizar o módulo django.core.serializers

from django.shortcuts import render, redirect
from perfis.models import Perfil
from django.core import serializers


# Create your views here.
def index(request):
    perfis = Perfil.objects.all()

    return serializers.serialize("json", perfis)

Tudo bem Yuri, e contigo ?

AttributeError at /

'unicode' object has no attribute 'get'

Request Method:     GET
Request URL:     http://localhost:8000/
Django Version:     1.7.4
Exception Type:     AttributeError
Exception Value:     

'unicode' object has no attribute 'get'

Exception Location:     /usr/local/lib/python2.7/dist-packages/django/middleware/clickjacking.py in process_response, line 31
Python Executable:     /usr/bin/python
Python Version:     2.7.6
Python Path:     

['/home/thiagod/Projetos/Python/Django/connectedin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat',
 '/usr/lib/python2.7/dist-packages/gtk-2.0',
 '/usr/lib/pymodules/python2.7',
 '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
 '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']

Server time:     Thu, 15 Feb 2018 16:36:56 +0000

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software