[Django] Django 기초

버버니야·2022년 3월 21일
0

프로젝트의 Backend는 Django를 이용해 구축되어있다.
프로젝트에 앞서 Django의 기초를 공부하고자한다.

Django란?

Django란 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크이다.
쉽고 빠르게 웹 사이트를 개발할 수 있도록 도와준다.

Django의 특징

웹 개발에 있어 번거로운 요소들을 직접 개발하지 않고도 내장된 기능을 이용해 빠른 개발이 가능하다.

MVT (Model, View, Template) 패턴을 따른다.

MVT 패턴이란?
모델(Model)은 데이터베이스에 저장되는 데이터를 의미
뷰(View)는 실직적으로 프로그램 로직이 동작하여 데이터를 가져오고 적절하게 처리한 결과를 템플릿에 전달
템플릿(Template)은 사용자에게 보여지는 UI부분을 의미합니다.

Django는 ORM이라는 객체와 RDB를 연결해주는 강력한 기능이 있지만 본 프로젝트에선느 직접 SQL 쿼리를 이용할 것이다.

raw SQL queries

Django에서 SQL 쿼리를 수행하는 두 가지 방법이 있다.

  • Manager.raw()를 사용해 원시 쿼리를 수행하고 모델 인스턴스 반환
  • 모델 레이어를 피하고 사용자 정의 SQL 직접 실행

원시 쿼리 실행

raw() 매니저 메서드는 모델 인스턴스를 반환하는 원시 SQL를 사용하는데 사용한다.

Manager.raw(raw_query, params=None, translations=None)

이 메서드는 원시 SQL 쿼리를 실행하고 django.db.models.query.RawQuerySet 인스턴스를 반환한다.

raw query 사용 예시
raw_queryset = User.objects.raw(
	raw_query='select * from auth_user where id=%(user_id)s',
    param = {
    	'user_id' = 1
    }
)

RawQuerySet은 완전 NativeSQL은 아니다.

raw() 메서드를 사용한다고해도 아직 QuerySet의 관리를 받는다.

RESTful API

RESTful API란?

REST(REpresentational State Transfer) : HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식

즉, 어떤 자원에 대해 CRUD 연산을 수행하기 위해 URI로 요청을 보내는 것이다.
이런 REST 기반의 API를 웹으로 구현한 것이 RESTful API.

RESTful API는 Resource(자원), Method(행위), Representation of Resource(자원의 형태)로 구성된다.

  • Resource : 서버는 유니크한 ID를 가지는 Resource를 가지고 있으ㅕ, 클라이언트는 이런 Resource에 요청을 보낸다. 이러한 Resource는 URI에 해당
  • Method : 서버에 요청을 보내기 위한 방식 GET, POST, PATCH, DELETE가 잇다. CRUD 연산 중에서 처리를 위한 연산에 맞는 Method를 사용해 서버에 요청을 보내야 한다.
  • Representation of Resource : 클라이언트와 서버가 데이터를 주고 받는 형태로 JSON, XML, TXT, RSS 등이 있다.

URL vs URI
URL은 Uniform Resource Locator로 인터넷 상의 자원의 위치를 의미. URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로, URI는 URL을 포함.

RESTful API를 위해 Django-rest-framework의 Serializer 이용

serializer는 Queryset과 모델 인스턴스와 같은 복잡한 데이터를 JSON이나 XML같은 다른 콘텐츠 유형으로 변환해준다.

profile
안녕하세요

0개의 댓글