본문 바로가기

Backend

(19)
2022-03-02::DRF Class기반 view Rewriting our API using class-based views 앞서 작성한 함수 기반의 뷰를 클래스 기반 뷰로 변경한 모습이다. views.py 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 snip..
2022-03-02::DRF Requests and Responses Request Objects DRF는 기존 HttpRequest에서 발전된 형태인 Request객체를 제공한다. 이 새로운 객체는 HttpRequest객체 보다 더 유연한 request 파싱 기능을 제공한다. Request객체의 가장 중요한 기능 중 하나는 request.data 속성이다. request.POST가 POST 요청에만 유효한 반면 request.data는 PUT, PATCH 메서드에도 유효하다. Response Objects DRF는 TemplateResponse의 한 종류인 Response객체도 제공한다. Status Codes HTTP status code를 숫자로 일일히 입력하는 것은 직관적이지 못하다. DRF의 status 모듈 안에는 HTTP_400_BAD_REQUEST와 같은 직..
2022-03-01::DRF Serialization What is Serialization? 직렬화는 데이터를 관리할 때, 한 포맷에서 다른 포맷으로 데이터를 재구성하는 것을 의미한다. 오브젝트를 직렬화하는 것을 오브젝트를 마샬링 한다고도 한다. Rest API에서 서버와 클라이언트는 JSON 형식으로 데이터를 주고받는다. 이때, 서버에서 해당 데이터를 처리하기 위해서는 객체를 JSON형태(혹은 그 반대로)로 변경해 주어야 한다. 이 경우 파이썬 객체를 JSON 객체로 변환하는 것을 serialization 반대로 JSON 객체를 파이썬 객체로 변환하는 것을 deserialization이라고 한다. REST API에서 직렬화는 필수적이라고 할 수 있다. Django Rest Framework를 이용한 serialization Django로 Rest API..
2022-02-25::Django 29-35 29. Dynamic URL Routing path('prudcts/', dynamic_lookup_view, name="product"), 요청 url 다음에 오는 값을 동적으로 받아서 처리할 수있다. 이 경우에는 int형의 데이터 my_id로 값을 받았다. 해당 값은 비즈니스 로직 dynamic_lookup_view로 전달된다. def dynamic_lookup_view(req, my_id): obj = Product.objects.get(id=my_id) context = { "object": obj } return render(req, "products/product_detail.html", context) dynamic_lookup_view의 인자를 보면 다른 함수와 다르게 my_id가 있다. ..
2022-02-24::Django Forms Raw HTML form CSRF verified failed form 요청할때 머 추가한다. form을 get으로 요청할 때는 검색할 때와 같이 파라미터에 키워드가 추가된 채로 요청을 보낸다. action에는 요청을 보낼 url을 지정한다. get 요청인 경우 view에 지정된 로직에서 req.GET['{paramName}'] 메서드를 통해 파라미터를 받을 수 있다. get 요청은 보안에 취약하기 때문에 해당 데이터를 저장하는 것은 위험하다 따라서 클라이언트에서 데이터를 전송할 때는 POST 요청을 한다 POST 요청에 담긴 데이터의 경우에는 아래 메서드를 통해 접근이 가능하다 if req.method == "POST": req.POST.get('{name}') 위 코드는 데이터는 검증(validati..
2022-02-24::Django Read, Create with sqlite3 Render Data from the database with a model 데이터를 어떻게 받아올 수 있나? from products.models import Product products.model 파일에 있는 Product class를 가져온다. from products.models import Product obj = Product.objects.get(id=1) dir(obj) Class -> objects() -> get() 과정을 통해 해당 되는 데이터를 가져올 수 있다. obj라는 변수에 해당 데이터를 담았다. 그리고 마지막 줄에 추출한 obj 데이터로 접근 할 수 있는 세부 데이터들을 살펴 볼 수 있다. 물론 Class안의 필드에도 접근이 가능하다. 따라서 여기서 우리는 id=1인 데이터..
2022-02-20::Django models Django에서 app은 내부 기능 모듈을 의미한다. 기본 내장 app인 auth나 admin을 통해 계정을 관리할 수 있다. Django의 기본 경로는 /Users/macbook/Desktop/Computer/Django/trydjango/src app는 세분화된 하나의 기능을 수행해야 한다. 먼저 데이터를 매핑하고 저장하는 app 아래 명령어를 통해 장고 내에 앱을 생성할 수 있다. python manage.py startapp {appName} 디렉터리를 보면 products라는 디렉터리가 새로 생성되었음을 알 수 있다. 그 중 models.py에 db에 매핑할 모델을 설정할 수 있다. 예시는 아래와 같다. from django.db import models # Create your models h..
2022-02-20::Django 환경설정 가상환경 구성 가상 환경을 설정해 그 내부에서 패키지를 독립적으로 관리할 수 있다. venv를 사용하자 명령어 가상환경 생성 -p 파이썬 버전 지정 python3 파이썬3 사용 .현재 위치를 가상환경으로 사용 virtualenv -p python3 . 가상환경 실행 source bin/activate 가상환경 종료 deactivate 현재환경 패키지 목록 조회 pip freeze 가상환경을 실행시킨 다음 pip freeze명령어를 실행하면 해당 가상환경 안에서 설치한 패키지 목록을 확인할 수 있다. 다음 명령어를 통해 2.0.7 버전의 장고를 설치하자 pip install django==2.0.7 장고 프로젝트를 생성 django-admin startproject trydjango django-admin..