Backend

Authentication / Permission / Throttiling 구분 1. Authentication(인증) : 유저 식별 2. Permission(허가) : 유저 식별 후, 해당 유저의 요청에 대한 허용/거부 결정 3. Throttling : 허용된 유저에 대해, 일정 기간 동안에 허용할 최대 요청 횟수 인증(Authentication) 처리 순서 1. 매 요청 시마다 APIView의 dispatch(requet) 호출 2. APIView의 initial(request) 호출 3. APIView의 perform_authentication(request) 호출 4. request의 user속성 호출( rest_framework.request.Request 타입 ) 5. request의 _aut..
form 생성자 : data인자를 먼저 입력받고 뒤쪽에 instance인자를 입력받는다 serializer 생성자 : instance인자를 먼저 입력받고 뒤쪽에 data인자를 입력받는다 Serializer 사용하는 이유 1. 데이터직렬화 사용하기위해 → instance 인자에 모델 객체 or QuerySet 넘겨주면 된다 2. 입력값에 대한 유효성 검증 및 검증에 통과한 값들을 가져오고 DB에 저장하는 form 같은 역할 → data 인자에 입력값 넘겨주면 된다 Serializer에 data= 인자가 주어지면 .is_valid()가 호출되고 나서야 아래의 속성에 접근할 수 있다 .initial_data 필드 .validated_data를 통해 유효성 검증에 통과한 값들이 .save() 시에 사용된다 c...
특징 비교 Form/ModelForm HTML 입력폼을 통한 입력에 대한 유효성 검사 주로 Create/Update에 대한 처리에서 활용 장고 admin 커스텀 할 때 활용 CreateView/UpdateView CBV를 통한 뷰 처리 → 단일 뷰 Serializer/ModelSerializer Serializer는 뷰 응답을 생성하는 데 범용적이고 강력한 방법 제공 ModelSerializer는 Serializer 생성을 위한 Shortcut 데이터 변환 및 직렬화 지원 ( ex. JSON 포맷 ) Web API 포맷 (주로 JSON 포맷) 입력에 대한 유효성 검사 List/Create 및 특정 Record에 대한 Retrieve/Edit/Delete 등 에서 활용 APIView를 통한 뷰 처리 → 단..
Renderer 같은 Endpoint에서 요청받은 타입에 맞춰, 다양한 응답포맷을 지원 Content-Type헤더 , URL Captured Values 의 방법을 통해 Renderer 지정 가능 기본 지원되는 Renderer JSONRenderer ( 디폴트 지정 ) json.dumps를 통한 JSON 직렬화 media_type : application/json | format : json BrowsableAPIRenderer ( 디폴트 지정 ) self-document HTML 렌더링 media_type : text/html | format : api TemplateHTMLRenderer ※ API 서버라도 경우에 따라 HTML 응답 받을 수 있음 ( 모든 응답을 JSON으로 받지 않아도 됨 ) 지정..
ViewSet list/create → 하나의 url 필요 detail/update/partial_update/delete → 하나의 url 필요 》 최소 2개의 클래스 기반 뷰 필요 ViewSet은 2개의 url에 대한 구현을 하나의 클래스에서 지원해줌 # views.py from django.shortcuts import get_object_or_404 from rest_framework import viewsets from rest_framework.response import Response class PostViewSet(viewsets.ViewSet): def list(self, request): qs = Post.objects.all() serializer = PostSerializer(qs..
DRF에서 지원하는 mixins CreateModelMixin ListModelMixin RetrieveModelMixin UpdateModelMixin DestroyModelMixin Method별로 로직 연결 from rest_framework import generics from rest_framework import mixins # GenericAPIView가 무조건 맨 뒤에 와야함 class PostListAPIView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): queryset = Post.objects.all() serializer_class = PostSerializer def get(self, requ..
DRF의 2가지 기본 뷰 APIView : 클래스 기반 뷰 @api_view : 함수 기반 뷰를 위한 장식자 두 가지 다 View에 여러 기본 속성 부여 1. renderer_classes : 직렬화 class 다수 rest_framework.renderers.JSONRenderer : JSON직렬화 rest_framework.renderers.TemplateHTMLRenderer : HTML 페이지 직렬화 2. parser_classes : 비 직렬화 class 다수 rest_framework.parsers.JSONParser : JSON 포맷 처리 rest_framework.parsers.FormParser rest_framework.parsers.MultiPartParser 3. authentica..
장고 기본 View에서의 HttpResponse JSON 응답 모든 View는 HttpResponse 타입의 응답을 해야만 한다 장고 기본에서 HttpResponse JSON응답을 할 수 있는 2가지 종류가 있다 직접 json.dumps 를 통해 직렬화된 문자열을 획득하여 HttpResponse를 통해 응답 위의 과정을 합쳐 JsonResponse 라는 HttpResponse를 상속받은 클래스 지원 (내부적으로 DjangoJSONEncoder가 디폴트 지정) DRF Response 활용한 HttpResponse JSON 응답 qs = Post.objects.all() serializer = PostSerializer(qs, many=True) from rest_framework.response impor..
직렬화 ( Serializer ) 모든 프로그래밍 언어의 통신에서 데이터는 문자열로 표현되어야만 한다 직렬화에 대해 항상 비직렬화 규칙도 갖고 있어야 원래 객체 복원 가능하다 송신자 : 직렬화 (Serialize) = 객체를 문자열으로 변환하여 데이터 전송 수신자 : 비직렬화 (deserialize) = 수신한 문자열을 다시 객체로 변환하여 활용 직렬화 포맷의 종류 각 언어에서 모두 지원 : JSON, XML 등 특정 언어에서만 지원 : Pickle ( 파이썬 ), 직접 만든 커스텀 포맷 등 → 타 언어로 전달했을 때 비직렬화 에러 발생 보통의 웹 : GET 요청에 대해선 HTML 포맷으로 응답 / POST 요청에 대해선 application/x-www-form-urlencoded 나 multipart/..
django-rest-framework (DRF)설치 pip install djangorestframework~=3.11.0 settings.py 에 있는 INSTALLED_APPS에 "rest_framework" 추가 urls.py에 있는 urlpatterns에 path('api-auth/', include('rest_framework.urls')) 추가 → django.contrib.auth의 login,logout view 사용 한 모델(ex. Post) 에 대한 API 서비스 제공할때 기존 url 설계 새 포스팅 내용 등록하고 확인 응답 → /post/new/ 주소로 POST 요청 포스팅 목록 및 검색 응답 → /post/ 주소로 GET 요청 10번 포스팅 내용 응답 → /post/10 주소로 G..
dltjdn
'Backend' 카테고리의 글 목록 (2 Page)