Django의 class-base view는 old-style view에서 환영하는 만한 출발이다 - Reinout van Rees REST framework는 Django의 View의 subclass인 APIview class를 제공합니다. APIView class는 정규적인 View class와 아래와 다른 점이 있습니다: handler method에 전달된 Request은 Django의 HttpRequest 인스턴스가 아닌 REST frmaework에 요청된 인스턴스 입니다 Handler methods Django의 HttpResponse 대신 REST framework Response를 리턴합니다. view는 content를 negotitation하고 올바른 renderer response를 설정..
Django
Responses 기본 HttpResponse와 달리 TemplateResponse 개체는 뷰에서 제공한 context를 계산합니다. 마지막 출력 까지 response는 필요하지 않다면 계산되지 않습니다 - Django documentation - REST framework는 클라이언트 요청에 따라 여러 콘텐츠 유형으로 랜더링 할 수 있게 HTTP content를 지원합니다. 그래서 다양한 content types로 랜더링 가능합니다. Response class는 Django의 SimpleTemplateResponse 의 subclass 입니다. Response objects는 native Python primitives로 데이터로 초기화 합니다. 그런 다음 REST framework는 표준 HTTP c..
REST 기반 웹 서비스 작업을 수행하는 경우 request.POST를 무시해야 합니다. — 말콤 트레디닉, 장고 개발자 그룹 .data request.data는 request body의 분석된 내용을 반환합니다. 이는 request.POST 및 request.FILES과 유사하지만 다음 부분을 제외하고 비슷합니다. 파일 및 비파일 입력을 포함하여 모든 구문 분석된 내용이 포함됩니다 POST 이외의 HTTP 메서드의 내용을 구문 분석할 수 있도록 지원하므로 PUT 및 PATCH 요청의 내용에 액세스 할 수 있습니다 form data만 지원하는 것이 아닌 REST framework의 유연한 요청 파싱을 지원합니다. 들어오는 form data를 처리하는 방식과 비슷하게 JSON 데이터 또한 처리할 수 있습니..
목표 이번 tutorial 3에서는 기존 작성했던 함수 형식의 class 기반의 view로 작성해서 더 가독성 있고 코드 길이를 줄이는 것을 배우는 것이 목표입니다. from snippets.models import Snippet from snippets.serializers import SnippetSerializer from django.http import Http404 from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status class SnippetList(APIView): """ List all snippets, or create a new..
REST 프레임워크는 Request을 더욱 확장해서 사용합니다. request.POST, request.GET이 아닌 하나의 클래스에서 처리하기를 지향하기 때문에 request.data를 사용 할 수 있습니다. request.POST # Only handles form data. Only works for 'POST' method. request.data # Handles arbitrary data. Works for 'POST', 'PUT' and 'PATCH' methods. API 뷰 래핑 DRF에서 API를 보기 좋게 작성하기 위해 두 가지 방법을 사용합니다. 1. @API_view 함수 기반 뷰 작업을 위한 데코레이터 2. APIView 클래스 기반 뷰로 작업하기 위한 클래스 from rest_..
검색 기능을 구현 중에 db에 있는 값을 split from django.db.models import Func, CharField class StripWhitespace(Func): function = 'REGEXP_REPLACE' template = "%(function)s(%(expressions)s, '\\s', '', 'g')" output_field = CharField() proposals = proposals.annotate( stripped_name=StripWhitespace('name') ) proposals = proposals.filter(stripped_name__icontains=keyword) annotate시 만들어둔 클래스를 통해서 name을 쪼개 비교
encode/rest-framework-tutorial 에서 코드를 확인 할 수 있습니다 pip install django pip install djangorestframework pip install pygments # We'll be using this for the code highlighting 먼저 가상환경으로 진입 후에 위의 코드들을 install 해줍니다 그리고 앞선 맛보기의 tutorial의 project를 활용해서 프로젝트를 진행해 보겠습니다. 앱의 경우 snippets로 시작하겠습니다 python manage.py startapp snippets 등록 후에 해야할 작업이 있죠? #apps 'rest_framework', #local apps 'snippets', INSTALLED_APP..
django로 개발하시다 보면 현재 가장 인기있는 데이터 형식인 json을 다루는 강력한 툴인 Django REST framework(이하DRF)를 한번 씩은 접해보셨을 겁니다. DRF는 Django 프로젝트를 통해 RESTful한 API를 쉽게 만들 수 있게 도와주는 파이썬 패키지입니다. DRF의 주요 기능으로 Serialization(직렬화): db의 모델이나 쿼리셋을 JSON 또는 다른 형식으로 변환하는 직렬화 기능을 제공합니다. 이 기능을 통해 더 쉽게 데이터를 json 형태로 보내 줄 수 있습니다. Viewsets 및 Serializers: DRF에서 Viewsets와 Serializers를 사용하여 API의 엔드포인트와 데이터 변환을 정의합니다. Viewsets는 데이터를 가져오거나 업데이트하..