관리 메뉴

log.Sehee

Rest_framework - Decorators / serializer.py 본문

Django

Rest_framework - Decorators / serializer.py

Sehe_e 2023. 4. 23. 20:27

 

- articles / views.py

 

Decorator의 작동 방식

# wrapper함수에 decoration함수에서 실행될 함수인 func를 준 뒤 decoration 함수를 넣기
# decoration 함수가 실행될 때마다 임의의 함수가 설정한 순서대로 실행된다.
def wrapper(func):
    def decoration():
        print("함수 이전에 실행")
        func()
        print("함수 이후에 실행")
    return decoration

# wrapper함수에 넣을 인수, decoration 함수에서 실행될 함수를 선언
def basic():
    print("실행하고자 하는 함수")

# 새 변수에 내가 만든 decoration 루트 /wrapper함수/ 저장
new_function = wrapper(basic)
# 변수를 함수로 실행할 때 마다 decoration함수가 실행됨
new_function()


# - Teminal
# 함수 이전에 실행
# 실행하고자 하는 함수
# 함수 이후에 실행

 

축약

# @를 사용하면 wrapper(basic) 과 같은 결과가 나온다.
@wrapper
def basic():
    print("실행하고자 하는 함수")

# 새로운 변수 선언 없이도 간단히 decoration 실행
basic()


# - Teminal
# 함수 이전에 실행
# 실행하고자 하는 함수
# 함수 이후에 실행

 

views.py에서 사용한 decorators의 api_view가 @를 붙여 이런 방식으로 작동되고 있다는 것을 알 수 있다.

 


- articles / views.py

 

json 파일은 딕셔너리 형태로이터를 전달해주어야 한다.

 

그렇기 때문에 딕셔너리 형태로 데이터를 불러온 뒤, 변수에 넣어 Response하는 방식이 깔끔하다

 

하지만 매번 딕셔너리 형태로 적어 변수에 넣어주는 것은 반복적이며 비효율적이기 때문에 serializer 사용

 


 

- articles / serializer.py

 

이미 만들어 둔 모델을 import하여 전부 불러온다.

Article로 사용하던 모델명을 ArticleSerializer로 사용하면 딕셔너리 형태로 사용할 수 있게 된다.

위 필드는 모든 데이터를 불러오고 있는 상태지만 테이블에 따라 커스텀을 달리 할 수도 있다.

 

Comments