[Django] 간단한 REST API 서버 만들기3 - model, serializer 구현
진행순서
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=128, null=False)
password = models.CharField(max_length=128, null=False)
address = models.CharField(max_length=256, null=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 |