Django json 데이터 반환하기
api 서버 등 json 데이터로 통신하는 서버에서 사용할 수 있는 예제이다.
1. 사전 설정
프로젝트 생성 후 user 앱의 User 모델을 생성한다.
임의의 user 데이터를 2개 등록한다.
models.py
class User(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20, unique=True)
2. 사용 예시
2.1. QuerySet(Model Instance)을 json형태로 변환할 경우 .all()
serializers.serialize('json', value_name)
함수를 사용하여 json 형태로 변환시킨다.
views.py
from django.core import serializers
res_data = User.objects.all()
# <QuerySet [<User: User object (1)>, <User: User object (2)>]>
res_data = serializers.serialize('json', res_data)
return HttpResponse(res_data, content_type="text/json-comment-filtered")
출력결과
[
{
"model": "user.user",
"pk": 1,
"fields": {
"name": "KimTester",
}
},
{
"model": "user.user",
"pk": 2,
"fields": {
"name": "LeeTester",
}
}
]
2.2. QuerySet(dict)을 json형태로 변환할 경우 .values()
QuerySet 자료형은 json 내장함수를 사용할 수 없어 QuerySet를 list형으로 변환시킨후 json.dumps()
함수를 통해 json형태로 변환시킨다.
views.py
import json
res_data = Template.objects.values('name')
# res_data = <QuerySet [{'name': 'KimTester'}, {'name': 'LeeTester'}]>
res_data = json.dumps(list(res_data))
return HttpResponse(res_data, content_type="text/json-comment-filtered")
출력결과
[
{
"name": "KimTester"
},
{
"name": "LeeTester"
}
]