Python/Django

[Django] 간단한 REST API 서버 만들기3 - model, serializer 구현

개발새발 2020. 2. 8. 17:01
반응형

진행순서

1. user에 관한 model구현 및 DB 마이그레이션

2. request, response 처리를 위한 User Serializer구현

 

1. user에 관한 model 구현 및 DB 마이그레이션

api_user/models.py 에 user에 필요한 데이터들을 Model을 상속하는 User class에 만들어 준다.

models.py에 User class를 통해 User를 추상화 했다면 DB에 테이블의 형태로 User 테이블을 만들어 주어야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
from django.db import models
 
# Create your models here.
 
class User(models.Model):
    user_id = models.CharField(max_length=128null=False)
    password = models.CharField(max_length=128null=False)
    address = models.CharField(max_length=256null=True)
 
    class Meta:
        db_table = "User" #Table이름을 "User"로 정한다 default 이름은 api_user_user가 된다.
 
cs

 

models.py에 User class를 통해 User를 추상화 했다면 DB에 테이블을 만들어 주어야 한다.

장고에는 커맨드를 통해 간단한 명령어로 연동 된 DB table을 만들어 준다.

 

마이그레이션할 내용들을 만들고

$ python manage.py makemigrations 

 

DB에 table생성 및 수정 반영한다.

$ python manage.py migrate 명령어로 DB에 migrate한다. 

 

migrate가 완료되면 프로젝트내에 db.sqlite3파일이 생겨있는데 터미널로 확인해 보면 아래와 같이 User table이 만들어진것을 확인 할 수 있다.

sqlite> .schema User

CREATE TABLE IF NOT EXISTS "User" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "password" varchar(128) NOT NULL, "address" varchar(256) NULL, "user_id" varchar(128) NOT NULL);

 

*장고의 default DB는 sqlite3이며 settings.py에서 설정을 변경하여 mySQL, Postgresql등 다른 DB로 연동할 수 있다.

2. request, response 처리를 위한 User Serializer구현

django REST framework에서 제공하는 serializer를 활용하여 request로 받은 data를 역직렬화 하여 DB에 반영하고 reponse로 사용 될 data를 다시 직렬화하여 json이나 xml등으로 손쉽게 변환이 가능하다.

또한 django의 ORM을 이용하여 코드레벨에서 손쉽게 DB에 접근할 수 있다.

api_user/serializers.py를 만들고 아래와 같이 User에 대한 serializer를 구현해 준다.

1
2
3
4
5
6
7
8
9
from rest_framework import serializers
from .models import User
 
class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'
        # 모델 User의 모든 field를 serializer함.
 
cs
반응형