지금 까지는 문서(HTML) 한 장을 응답하는 방식으로 JSON 데이터를 응답하였다.
다양한 방법으로 JSON 데이터를 응답하는 방법을 알아보자.
# articles/views.py
from django.http.response import JsonResponse
def article_json_1(request):
articles = Article.objects.all()
articles_json = []
for article in articles:
articles_json.append(
{
'id': article.pk,
'title': article.title,
'content': article.content,
'created_at': article.created_at,
'updated_at': article.updated_at,
}
)
return JsonResponse(articles_json, safe=False)
JsonResponse()
safe
’ parameter# articles/views.py
from django.http.response import HttpResponse
from django.core import serializers
def article_json_2(request):
articles = Article.objects.all()
data = serializers.serialize('json', articles)
return HttpResponse(data, content_type='application/json')
# settings.py
INSTALLED_APPS = [
'articles',
'django_seed',
'rest_framework',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# articles/serializers.py
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields ='__all__'
# articles/views.py
from rest_framework.decorators import api_view
from .serializers import ArticleSerializer
from rest_framework.response import Response
@api_view(['GET'])
def article_json_3(request):
articles = Article.objects.all()
serializer = ArticleSerializer(articles, many=True)
return Response(serializer.data)