웹/Django

django 시작하기

#fdd4ff 2021. 9. 21. 21:09

*<점프 투 장고 :https://wikidocs.net/78004> 와 <장고 공식 문서: https://docs.djangoproject.com/ko/3.2/intro/ >를 참고해서 포스팅한 게시물입니다.

※백엔드 공부를 시작하면서 블로그에도 같이 정리를 하면 좋을 것같아 시작하는 포스팅입니다. 오류나 오타 지적 환영합니다 :) 


| 목차

1. Node.js VS django

2. django 란?

  2-1 Django의 정의

 2-1-1 프레임워크 vs 라이브러리

3. django 시작하기 

  3-1 파이썬 설치
  3-2 파이썬 가상 환경 만들기 
  3-3 가상환경에 장고 설치하기
  3-4 장고 프로젝트 생성하기 
  3-5 파이참 설치하고 장고 개발 서버 실행하기

 


 

1. Node.js VS django

 

 

백엔드(Backend)에 대한 공부를 시작하게 되면, 보통 우리는 Node.js라던지 Django라는 것을 접하게 될 것이다.

(백엔드는 서버와 DB를 관리하는 기술을 뜻함) 그래서 Node.js는 뭐고 Django는 뭔데..? 😯

두 개의 차이점을 잘 설명해주는 유튜브가 있어 링크를 걸어놓겠다. (https://youtu.be/PnhmeFakkXg)

유튜브에 나와있는 설명을 간략적으로 정리를 해보자면 우리가 엇을 빌드하느냐에 따라 선택이 갈린다고 한다. 

 

장고(django)는 *CRUD를 위한 최선의 옵션을 갖고있다. (ex. 인스타그램, 유튜브)

유저, 인증, 뷰,템플릿, URL,*Static filies 등이 최적화가 되어있는데 이로인해 사진을 update하고 read하며 댓글을 create, delete이 가능... 즉, 장고의 사용 예시들 중 하나인 인스타그램은 *CRUD 방식을 사용하기 때문에 장고를 사용하여 개발했다고 이해하면 될 것같다

*CRUD란 (C:Create, R:Read, U:Update, D:Delete)의 약자이다.

*Static filies 란 말 그대로 정적인 파일이라는 말이다. 주로 이미지, JavaScript 또는 CSS와 같은 추가 파일을 뜻함.

 

CRUD 외에 Real time이 필요할 때 API를 사용해야하는데 API가 자바스크립트 베이스일 경우 Node.js를 사용하면 좋다. (ex 넷플릭스 => CRUD외에 스트리밍이나 리얼타임을 자주 사용하기 때문이다.)

 

즉, 더 짧게 요약하자면

django를 추천 => CRUD를 활용할 경우 

Node.js를 추천 => 리얼타임과 API 등등을 활용할 때

로 이해하면 될 것같다. 

 

 

 


 

2. django 란?

 

여기서 우리는 django를 배워보도록 할 것이다. 근데 django가 도대체 뭔데?  배워야할 django가 무엇인지 부터 짚고 넘어가자.

 


 

2-1 Django의 정의

django 란?

=> 웹 프로그램을 쉽고 빠르게 만들어 주는 *웹 프레임워크다. (즉, 우리가 흔히 배웠던 C, Python과 같은 프로그래밍 언어가 아니다.)

여기서 웹 프레임 워크란 단어가 생소할 수도 있다. 

실제로 웹 프로그램을 만든다고 하면 만들어야 할 기능은 수도 없이 많을 것이다. 그걸 어느 세월에 다 만들어...

하지만, 기능이 이미 만들어져 있는 웹 프레임워크를 사용하면 기능들을 사용자가 일일이 만들 필요가 없어진다. 그저 웹 프레임 워크에 있는 기능을 익혀서 사용하기만 하면 된다. (파이썬으로 만들어진 웹 프레임 워크 중 하나가 장고)

또한 장고는 기본적으로 SQL 인젝션, XSS(전에 해킹 기법 카테고리에서 포스팅했던 기법), CSRF, ClickJacking 과 같은 보안 공격을 기본적을 막아준다. 즉, 장고를 사용하면 이런 보안 공격에 대한 코드를 우리가 짤 필요가 없어진다. 

보안 공격에 대한 코드를 짜지 않아도 되고 우리가 일일이 기능을 구현할 필요도 없으니 얼마나 편리한가..

 

2-1-1 프레임워크 vs 라이브러리

여기서 라이브러리(Library) 와 프레임워크(Framework)이라는 용어가 헷갈릴 수도 있을 것같다. (사실은 내가 그런 케이스다) 

더 자세한 설명은 아래 유튜브를 참고하면 좋겠다.(https://www.youtube.com/watch?v=t9ccIykXTCM) 이 분 없었으면 진짜 공부 어떻게 하냐 여러모로 대단하신 분

취업 면접 질문에서 볼 법한 내용이라고 하니, 이왕 공부하는 거 같이 알아두면 좋을 것같다

 

 공통점) 라이브러리와 프레임 워크는 둘다 코딩을 편리하게 하기 위해서 가져다 쓰는 것

차이점) "내가" 라이브러리를 부르고 "프레임워크"가 나를 부르는 것  (즉, 누가 누구를 컨트롤 하는가. 구글링을 해보니 흐름(Flow)의 제어권한이라고도 표현하는 것같다.)

 

라이브러리 ("내가" 코드를 컨트롤하고 모든 결정을 다 내린다 )

"내가" 필요할 때 부르는 것 (ex ) jQuery (웹사이트에 인터랙티브한 요소를 넣을 수 있음) ) 



프레임워크 ("프레임워크"가 정해준 규칙을 따라간다.)

프레임워크가 "나"를 부름. 프레임워크의 규칙을 따라야함 내가 코드의 규칙을 결정하는 입장 X (ex) django)
 

 

비유를 하자면 프레임 워크는 정해진 설계도를 가지고 레고를 조립하는 것이면, 라이브러리는 내 입맛대로 레고를 조립하는 느낌이다.

리액트는 라이브러리인지 프레임워크인지 정의하기 애매한 회색의 영역에 존재함. 

 

 


 

 

3. django 시작하기 

(* 이 글은 django에 대해 쓰는 글이므로 설치 환경이나 방법에 대해선 간략하게 쓰는 것에 대해 양해 부탁드립니다. 설치과정은 처음에 첨부한 점프 투 장고 문서를 보고 따라한 것이니 이를 참고하시면 될 것같습니다.)

 

3-1. 파이썬 설치

앞서 설명했던 것처럼 장고는 파이썬으로 만들어진 웹 프레임 워크이므로 파이썬을 설치해야한다. (이는 구글링을 하면 잘 나와있으므로 참고하면 된다.)

(+)보통 파이썬과 장고 개발에 많이 사용되는 에디터는 VScode와 Pycharm이다.

 

3-2. 파이썬 가상 환경 만들기 

본격적으로 장고 개발 환경을 준비하기 위해선 파이썬 가상 환경이라는 개념을 알아야한다(장고를 파이썬 가상 환경에 설치할 것이기 때문) 

 

Q. 근데 왜 가상 환경이 필요한데?

=> 하나의 데스크톱에 여러 버전의 파이썬을 설치해야하는 문제를 해결하기 위해 하나의 데스크톱 안에 독립된 가상 환경을 여러 개 만든다. 이로써 1 데스크톱에 여러 버전 파이썬을 사용 가능. 명령 프롬포트를 통해 가상환경을 만들수 있는데 이도 구글링을 하면 쉽게 만들 수 있다. 

 

 

3-3. 가상환경에 장고 설치하기

https://wikidocs.net/70588 문서를 참고해서 설치과정을 따라오면 다음과 같은 결과를 볼 수 있을 것이다. 

 


3-4. 장고 프로젝트 생성하기

장고 프로젝트를 생성하면 한 개의 웹 사이트를 생성하는 것과 같다. 프로젝트 안에는 여러 개의 앱이 존재하는데 앱들이 모여 웹 사이트를 구성한다.

여기서 앱은 우리가 흔히 알고있는 안드로이드 앱이나 ios앱인 하나의 프로그램을 뜻하는 게 아니다. 장고의 앱은 프로젝트를 구성하는 작은 단위의 기능을 뜻한다.  장고 프로젝트는 여러개일 수 있으니 이를 묶어줄 루트 디렉터리를 생성해줘야한다. 

 

https://wikidocs.net/72377 문서를 참고해서 진행하면 다음과 같은 결과화면을 볼 수 있을 것이다. 

 

 

 

3-5. 파이참 설치하고 장고 개발 서버 실행하기 (점프 투 장고에 써있는 에디터로 실행함) 

https://wikidocs.net/72407 문서를 참고해서 따라오면 다음과 같은 결과를 볼 수 있을 것이다. 

 

아까 캡쳐와는 다르게 한글로 바뀐 화면 

 

 

 

 

 

 


 

 

 

이렇게 우리는 django가 어떤 것인지, django의 설치와 간단하게 사용 찍먹(?)을 해보았다.  다음 게시물에는 장고의 공식문서에 나와있는 튜토리얼을 중심으로 게시물을 올릴 예정이다.

 

 

 

 

 

 

부족한 게시물이지만 도움이 많이 되었으면 좋겠습니다 :) 다음 게시물에서 봬요!