class Student(models.Model):
student_id = models.CharField(max_length=15, unique=True)
name = models.CharField(max_length=30)
age = models.IntegerField()
내가 서버에 api 요청 -> 서버에서 데이터를 건내줌
아직 서버에서 건내줄 데이터가 없네..?
서버에 임의로 데이터를 만들고 admin 페이지에 등록!
admin.site.register(Student)
이제 api 요청을 해서 데이터를 불러오자
pip install djangorestframework
INSTALLED_APPS에 rest_framework 추가
Serializer란?
Django Model안의 queryset을(api를 요청한 쪽의 데이터들) json 또는 딕셔너리 형태로 바꿔준다.
from rest_framework import serializers
from .models import Student
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = '__all__'
모델 자체에 대한 데이터를 추가해야 하는 경우 Meta 클래스를 사용한다.
현재, fields 변수를 통해 우리가 만든 Student model의 정보를 다 주게끔 설정했다.
추상으로 설정된 모델은 상속만 가능하다. 공통 필드가 있는 여러 모델이 있는 경우 이 옵션을 사용할 수 있다.
데이터베이스 내에서 테이블 식별하는 데 사용해야 하는 이름을 설정한다.
모델 객체의 순서를 정의하는 데 사용한다.
사람이 읽을 수 있는 모델의 단일 이름을 정의하는 데 사용되며 관리자 패널에도 반영된다.
더 다양한 Meta options
https://docs.djangoproject.com/en/3.0/ref/models/options/
이제, 직렬화한 정보를 보여주게끔 만들어보자.
class StudentList(APIView):
def get(self, request):
model = Student.objects.all()
serializer = StudentSerializer(model, many=True)
return Response(serializer.data)
path('api/student_list', StudentList.as_view(), name='student_list')