카테고리 없음

django QuerySet json으로 Response 하기

integerJI 2020. 8. 2. 13:14

models.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

class Report(models.Model):
    objects = models.Manager()
    input_user = models.ForeignKey(User, on_delete = models.CASCADE)
    input_report = models.CharField(max_length=200, null = True, default='비어있음')
    input_date = models.CharField(max_length=20, default=0, null=True, blank=True)
    input_time = models.CharField(max_length=20, default=0, null=True, blank=True)
    input_lat = models.DecimalField(max_digits=9, decimal_places=6, null = True)
    input_lon = models.DecimalField(max_digits=9, decimal_places=6, null = True)

 

먼저 저의 모델입니다.

 

input값을 가져와 담습니다.

 

views.py

from django.http import HttpResponse
from django.core import serializers

def getApi(request):
    report = Report.objects.all()
    report_list = serializers.serialize('json', report)
    return HttpResponse(report_list, content_type="text/json-comment-filtered")

HttpResponse와 serializers를 import 해줍니다.

 

해당 기능은 각각

 

HttpResponse - json으로 데이트를 반환하기 위해 사용함

 

serializers - 모델을 json타입으로 데이터를 직렬화

 

합니다.

 

path('getApi/', views.getApi, name='getApi'),

해당 api를 호출하는 url을 생성해준 뒤

 

 

서버를 실행시켜 줍니다.

 

이제 해당 api가 json형식으로 데이터를 잘 넘겨주는지 확인해 봅니다.

 

 

저는 postman을 사용했습니다.

 

http://127.0.0.1:8000/app/getApi/ 

 

해당 api를 찔러보니

 

json타입으로 잘 반환이 되네요

 

참고 및 배운곳 : https://dev-yakuza.github.io/ko/django/response-model-to-json/

 

장고(django)의 모델(Models)을 JSON으로 응답(Response)하기

장고(django) 프로젝트에서 API를 사용하여 정보를 전달할 때, 모델(Models)에서 가져온 정보(QuerySet)를 그대로 JSON으로 응답(Response)하는 방법에 대해서 알아봅니다.

dev-yakuza.github.io