728x90
반응형
Djano QuerySet 값을 Json으로 보내줄 때,
data를 serialize를 하지 않고 보내면 다음과 같은 오류 발생
TypeError: Object of type MyCoupon is not JSON serializable
따라서 serialize를 해줘서 보내야 한다.
from django.core import serializers
위와 같이 serializers를 import해서 이용해도 되지만
ORM query로 얻은 QuerySet을 .values()로 뽑아서 보내줘도 된다.
from django.http import JsonResponse
from .models import YourModel
def your_view(request):
queryset = YourModel.objects.all().values()
data = list(queryset)
return JsonResponse(data, safe=False)
* safe=False
default로 safe=True로 설정되어 있는데,
dictionary 형태를 받아서 보낼 때는 safe 속성값을 default safe=True 상태로 보내면 된다.
그런데 위 예제와 같이 list로 담아서 Json형태로 보낼 때는 safe=False 값을 설정해줘야
Django에서 Json 형태로 변형해서 값을 보내준다.
또는 아래와 같이 dictionary 형태로 보내서 safe=False를 사용하지 않을 수도 있다.
from django.http import JsonResponse
from .models import YourModel
def your_view(request):
queryset = YourModel.objects.all().values()
data = list(queryset)
return JsonResponse({"data":data})
728x90
반응형
'Python > Django' 카테고리의 다른 글
Python Django: 동시 접속 로그인 막기 # session # session_key (0) | 2023.04.30 |
---|---|
Python Django - request session 이용하기 # get 에서 post로 data 넘기기 (0) | 2023.04.28 |
Django: 시간 변환 # timezone, pytz # UTC, Asia/Seoul (0) | 2023.04.11 |
Django ManyToMany로 생기는 중간테이블(intermediate table)에 접근하기 # through # 중간테이블 정의 없이 (0) | 2023.03.30 |
Django 최신 데이터 가져오기# DateTimeField # latest # earliest (0) | 2023.03.26 |