Django Rest API(1)

‍박소연·2022년 7월 28일
1

Django

목록 보기
2/10

장고 프로젝트 생성

models.py
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.py
admin.site.register(Student)

이제 api 요청을 해서 데이터를 불러오자

Django Rest API 만들기

필요한 모듈 설정

pip install djangorestframework
INSTALLED_APPS에 rest_framework 추가

대부분의 REST API에서는 JSON으로 데이터를 주고 받는다.

Serializer란?
Django Model안의 queryset을(api를 요청한 쪽의 데이터들) json 또는 딕셔너리 형태로 바꿔준다.

serializers.py
from rest_framework import serializers
from .models import Student

class StudentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Student
        fields = '__all__'

모델 자체에 대한 데이터를 추가해야 하는 경우 Meta 클래스를 사용한다.

현재, fields 변수를 통해 우리가 만든 Student model의 정보를 다 주게끔 설정했다.

Meta Class

1. 추상 클래스

추상으로 설정된 모델은 상속만 가능하다. 공통 필드가 있는 여러 모델이 있는 경우 이 옵션을 사용할 수 있다.

2. db_table

데이터베이스 내에서 테이블 식별하는 데 사용해야 하는 이름을 설정한다.

3. ordering

모델 객체의 순서를 정의하는 데 사용한다.

4. verbose_name

사람이 읽을 수 있는 모델의 단일 이름을 정의하는 데 사용되며 관리자 패널에도 반영된다.

더 다양한 Meta options
https://docs.djangoproject.com/en/3.0/ref/models/options/

이제, 직렬화한 정보를 보여주게끔 만들어보자.

api.py
class StudentList(APIView):
    def get(self, request):
        model = Student.objects.all()
        serializer = StudentSerializer(model, many=True)

        return Response(serializer.data)
    
urls.py
path('api/student_list', StudentList.as_view(), name='student_list')

0개의 댓글