2017-01-03 3 views
3

serializer가하는 일을 이해하고있는 동안 장고 레스트 프레임 워크를 배우고 있습니다. 필요할 때 완전히 사용할 수 없습니다. 직렬 기 및 모델 직렬 기 클래스의 경우. 당신 둘 중 하나만 제발 현실적인 예제를 사용하십시오.Django Rest Framework - serializer 클래스와 모델 serializer 클래스를 사용하는 경우의 구체적인 예

는 그래, 난 DRF 웹 사이트를 여러 번에 자습서를 통과하고 난 여전히 흐릿한

가 발생하고
+0

내 질문을 변경하려면, 모델 serializer를 사용해서는 안되며 serializer 클래스가 있어야하는 실제 사례가 있습니까? 데이터베이스에서 생성되지 않은 데이터를 직렬화 할 때? –

답변

2

이 좋은 예는 DRF tutorial에 그것이 대답에 커버 너무 많이 걸릴 것입니다,하지만 내가 좋아하는 것 몇 가지 포인트를 만들 수 있습니다.

첫째, DRF 문서 설명 :

우리 SnippetSerializer 클래스는 또한 발췌문 모델에 포함되어있어 많은 정보를 복제한다. 코드를 좀 더 간결하게 유지할 수 있다면 좋을 것입니다.

Django가 Form 클래스와 ModelForm 클래스를 제공하는 것과 같은 방식으로 REST 프레임 워크는 Serializer 클래스와 ModelSerializer 클래스를 모두 포함합니다.

스 니펫 모델은이 예제에 사용 된 모델의 이름입니다. 문서에서 알 수 있듯이 모델에서 동일한 필드를 다시 입력하여 Serializer으로 입력하는 대신 과 비슷한 방법으로 ModelSerializer을 사용하여 간단하게 Form을 사용할 수 있습니다.

하지만 기본적으로 "ok, 그럼 왜 간단한 Serializer 클래스가 존재합니까?"라는 질문을 사용자 의견에서 지적한대로 남겨 둡니다.

모델이 있고 관련 데이터 (일반적으로 JSON이지만 이에 국한되지 않음)를 serialize/deserialize해야하는 대부분의 경우에는 ModelSerializer이 좋습니다. 추가 필드, 관련 serializer 또는 임의의 논리가 필요한 경우에도 ModelSerializer을 쉽게 조정할 수 있습니다. 개인적으로는 ModelSerializer이 모델과 관련된 데이터에는 적합하지 않다는 내 프로젝트를 본 적이 전혀 없었습니다.

그러나 모델을 준수하지 않는 데이터를 처리해야하는 경우가 있습니다. 이러한 데이터는 DRF보기에 게시되고 Serializer은이를 처리합니다. 이러한 경우는 메일 메시지를 보내거나, 셀러리 작업을 설정하거나, 세션에 데이터를 추가하거나, 모델을 전혀 포함하지 않는 많은 다른 것들을 포함 할 수 있습니다.

+0

이것이 내가 말하는 것입니다. 실제로 이것은 매우 귀중합니다. 감사합니다. –

+0

@amazingCarrotSoup 도움이 된 것을 기쁘게 생각합니다. – Wtower

관련 문제