다시 봐서 반갑네.

오늘 만나서 반가웠어.

기분이 좋지 않다.

아무도 안말려!

 


 

good to see you again 

it was good seeing you

i'm not in a good mood

no one's stopping you.

 

'영어 > English with YouTube' 카테고리의 다른 글

09.12 Today's English  (0) 2020.09.12
09.11 Today's English  (0) 2020.09.12
08.29 Today's English  (0) 2020.08.29
08.26 Today's English  (0) 2020.08.26
영어 초보가 영어 잘하는 법 규칙 딱 2가지  (0) 2020.08.23

세상에,,,

파이썬으로 장고를 처음 배우는데, 너무 어려워서 기가 빨렸다.

무작정 클론코딩을 통해서 익혀보려 했으나, 실패다. (사실 실패는 아니다. 다 따라치긴 했으니까)

물론 두번의 튜토리얼을 완수했지만 혼자 하라고 하면 서버만 키고 끝날 것 같다.

단순히 파이썬과 일부 라이브러리의 규칙만 알고서는 감당할 수 없는 레벨인지라 조금 격앙된 나의 내면을 가다듬고서 차분히 개념정리를 시작해보려고 한다.

마치 미국 영어를 어느정도 배웠다 생각했는데 영국 어딘가 섬에서 그들의 문화와 사투리(?)영어를 다시 배우는 느낌이랄까... 심지어 장고는 웹 프레임워크라 백엔드부터 html, css와 관련된 개념까지 두루두루 알아야 한다.

나는 매우매우 극 초보자이기 때문에 특히 비전공자나 장고를 다뤄본 적이 없는 분들은 내가 설명해놓은 방식이 조금은 더 친절할(?)것이라는 망상과 함께 작성해나가려 한다.


파이썬 장고(python django) 개념 설명

목차

  • MVC, MTV
  • Django 개념
  • Project와 App
  • settings.py
  • manage.py

 


 

MVC, MTV

MVC는 Model + View, Controller의 약자이다.

장고는 여기서 Control 대신에 Template을 사용하는데 큰 차이는 없는 것 같다.

이전에는 프로젝트 관리가 데이터베이스, 함수처리, 고객에게 보여주는 화면 등 모두 잡동사니마냥 하나에서 관리하였다. 

https://www.essenceandartifact.com/

이렇게 관리하다보니 디자이너가 잘못 만져서 다른 부분을 본의 아니게 건드리면 그것을 복구하는 것과 같은 문제점이 생겼다.

이것을 해결하기 위해서 각 영역을 분리하게 된다.

https://www.essenceandartifact.com/

결국 이것이 위에서 말한 MVC모델이다. 여기서 M은 데이터베이스, C는 Control, V는 View를 의미하는데 각각이 하는 작업은 아래와 같다.

 

https://www.essenceandartifact.com/

우선 유저가 웹사이트에서 어떤 행동을 했다고 하자. 글을 쓴다던가 좋아요를 눌렀다든가...!

그러면 해당 controller가 고객의 행동을 받는다.

이후에 controller는 데이터베이스 접근하여 데이터베이스로부터 데이터를 가져오고,

view를 통해서 특정 기능을 하도록 한 뒤에 고객에게 보여준다.

추상적인 설명이지만, 대략 이런식으로 내부적인 흐름이 있는 것이다.

 


 

Django 장고 개념

https://www.youtube.com/watch?v=LYmZB5IIwAI

장고는 크게 보면 내부적으로 이러한 그림으로 표현된다.

쉽게 말하면 위에서 말한 MVC의 개념과 유사한데, 결국 여러 기능들을 분리시켜서 작동하는 것이다.

우선 웹에서 고객이 어떤 행동을 했다고 하자.(URL요청을 한다든지, 좋아요를 누른다든지..)

그러면 URL Dispatcher가 View를 통해서 해당 행동에 맞는 기능의 함수를 불러온다. 이 함수는 보통 DB에 있는 자료를 빼와야 하는데, 이는 Model을 통해서 관리한다.

해당 데이터를 가져오면 View는 다시 Template으로 넘겨주고, 이를 고객에게 표현해준다.

약간 기업의 프로세스와도 비슷하다고 볼 수 있는데,

고객이 상품을 요청하면 Template(판매자)이 이를 View(유통)에 전달한다.  

View는 다시 Model(제조)에게 이러이러한 기능을 갖는 재료를 갖고 조합해서 가져오라고 시킨다.

제조는 유통을 유통은 판매를 통해서 고객에게 다시 돌아가는 프로세스다.

상당히 유사하다.

그러나 내부적으로는 조금 더 복잡한데, 여기서 모두 설명하기에는 너무 전문적이고 나 또한 모른다.

직접 튜토리얼을 해본 입장으로써 조금 더 직관적이고 간략하게만 적어보려고 한다.

https://www.youtube.com/watch?v=LYmZB5IIwAI

잘 보면 위에서 설명했던 간략한 그림의 내용이 일부 중복이 된다.

장고 프로젝트를 설치하고 시행하면 이러한 구조의 디렉토리가 생성된다.

내부에는 .py확장자를 갖는 파이썬 파일과, html과 같은 마크업 언어의 파일이 있다.

여기서 우리가 건드는 코드부분은 주로 초록색 부분일 것이다. 회색 부분은 내부적으로 장고가 코드를 지원한다. 그래서 보이지 않는 영역에서 함수가 돌아가므로 내부적인 것은 그정도만 알면 되고, 어떤 코드를 사용해서 어떻게 기능을 취할지만 고려하면 될 것이다.

내가 이 튜토리얼을 하면서 흥미로웠던 점은, 파이썬 코드가 데이터베이스를 불러올때도 쓰이고, html을 건들때도 쓰인다는 점이다.

결국 파이썬의 기본적인 로직을 잘 이해하고 장고에서 제공하는 라이브러리를 잘 활용한다면, 파이썬 코드를 사용하여 웹 서비스 론칭을 할수 있다는 것을 의미한다.

다시 한번 살펴보자.

고객이 행동을 취하면 WSGI(web server gateway interface)라는 곳에서 파이썬 스크립트와 웹서버가 연결된다. 이정도만 알면 된다.

고객이 해당 URL을 요청하면, urls.py라는 파이썬 파일 안에서 찾아서 해당 view에 도달하도록 한다. urls.py는 도메인 주소가 정규표현식으로 표현되어 있다. 예를 들어 우리가 www.naver.com/ko/1  이라는 페이지가 있을 때, 저 숫자의 1부분을 1,2,3,4,5,6,7까지 있다면 직접 모두 한줄한줄 적어놔도 되지만, 이럴 경우 숫자가 더 커지면 상당히 복잡해진다.(그 외에도 하드코딩의 문제점은 많다.) 이를 방지하기 위해, 정규표현식과 같은 것을 사용하여 urls.py에 코드로 구현을 한다.

그러면 이후에 view로 들어가서 해당 url과 연결된 view의 함수를 호출한다. 여기서 함수는 우리가 파이썬에서 배웠던 def blahblah():와 같이 정의된 것들이다.

def blahblah():
	print('johnberboy nice')

그리고 이 함수를 다시 template으로 보내준다. 이 안에는 html, css, JS와 가튼 것들이 있고, 신기한 점은 {% %}를 표현하여 파이썬 기능도 구현할 수 있다는 점이다.

단순히 html을 내가 직접 다 쓰는게 아니라, 아까 view에서 작동시킨 것을 html으로 불러와서 반복문을 쓸 수도 있는 것이다.

재밌는 것은 이런 것들의 대부분은(특히 UI와 같은 것들) form.py라는 파이썬에서 지원을 해준다. 그래서 간편하다. Model에서 주는 데이터를 통해서 Template에 보여주는 것을 Form으로 더 관리하기 쉬워졌다고 이해하자.

 


 

Django project, Django app

 

장고 프로젝트

장고는 크게 프로젝트를 만들고 그 안에서 필요한 App을 구동하는 식으로 한다.

여기서 App은 특정 웹사이트에서의 기능인데 약간 컨텐츠와 비슷한 느낌?이라고 보면 될듯 싶다.

예를 들면 홈쇼핑이라든지, 블로그라든지, 인스타그램과 같은 것이라든지,, 뭐랄까 홈페이지 안에서의 컨셉 및 콘텐츠 같은것? 그것을 장고 내에 다양한 App이 지원을 해준다.

보통은 파이썬 가상환경을 통해서 장고 프로젝트를 시작한다.

가상환경에 대해 간단히 설명하자면, 파이썬을 쓸 때 버전에 대한 충돌이 있기 때문에 하나의 버전 안에서만 활용할 수 있도록 환경을 임시적으로 만드는 것이다. 이 안에서만 계속 프로젝트를 수행하면 나중에 파이썬이나 다른 라이브러리 버전들과 충돌할 가능성이 적어진다.

# cmd와 같은 CLI환경에서 가상환경 실행
$ myvenv\Scripts\activate

# 실행하면 (myvevn)라는 글이 앞에 붙는다
# 이것이 가상환경이 실행중이라는 의미이다
(myvenv) $ django-admin startproject tutorial

이렇게 장고 스타트 프로젝트를 하면 새로운 디렉토리가 생긴다. 

이 안에 장고가 지원해주는 다양한 코드들이 엄청나게 많이 있다.

내가 만든 디렉토리(위 사진)를 보면 안에 manage.py, db, blog와 같은 것들이 있는데 잘 보면 위에서 설명한 장고 내부의 동작하는 것들과 중복되는 것이 보일것이다.

내가 만든 이 프로젝트 같은 경우에는 'blog'라는 폴더가 보일텐데 여기서 설명하는 App이 이것이다.

$ manage.py startapp blog

위에서 내가 만든 프로젝트는 블로그형 웹사이트를 구축하는 것이다.

이는 특정 사용자가 가입해서 글의 제목과 내용을 게시하는 것처럼 만들 수 있다.

blog directory

내가 시작한 App인 blog의 디렉토리를 들어가보면, 맨 위쪽에서 설명한 model, urls, form과 같은 것들이 파이썬 파일로 저장되어 있음을 볼 수 있다.

실제로 파이썬IDE(pycharm, vscode 등)을 통해서 파이썬코드를 변경하여 내가 원하는 기능을 구현하는 것이다.

 


 

setting.py

실제로 setting.py파일 내부의 파이썬 코드는 이런식으로 기본적으로 121행정도가 준비되어 있다.

setting의 주요 내용은 아래와 같다.

  • debug: 디버그 모드설정(코드에서 벌레같은놈 잡아내기; 에러색출)
  • installed_apps: app을 추가하는 것(아까 말한 blog과 같은 것)
  • middleware_classes: 위에서 회색부분의 네모칸을 담당하는(실제로 내가 건드리지는 않지만 내부적으로 구현되는 것들)에 대한 내용, 아마 이것들이 파이썬 라이브러리들의 내부적인 모습과 유사하지 않을까 생각.
  • templates: 말그대로 templates과 관련된 것이다. html이나 view와도 밀접한 설정.
  • databases: 데이터베이스에 대한 설정이다. 기본적으로 장고에서는 sqlite3를 지원해주지만 이는 내 입맛대로 MySQL이나 Oracle과도 연결시킬 수 있다.
  • static_url: 정적 파일의 URL인 css, JS(java script)와 같은 것들에 대한 설정을 할 수 있다.

 


 

manage.py

프로젝트의 전반적인 관리 명령을 내린다.

영어로 표현되어 있어서 가독성에 취약할 수 있으나 이렇게 많은 것들이 있다는 정도만 알자.

https://docs.djangoproject.com/en/3.1/ref/django-admin/

 

django-admin and manage.py | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

상당히 많은 수의 명령어가 있으나, 주로 쓰는 명령어를 보면 아래와 같다.

$ python manage.py (          )
  • startapp: 앱을 생성한다. 위에서 본 blog라든지, communit같은 앱을 생성할 수 있다.
  • runserver: 기본적으로 서버를 실행할 때 필수적으로 사용하는 명령어
  • createsuperuser: 관리자를 생성한다. 주로 admin으로 만드는 것이 이것이다.
  • makemigrations app: 내가 만든 blog라는 app과 DB간의 연동을 위해서 필요하다
  • shell: 쉘이라는 것을 통해 데이터를 확인할 수 있다.
  • collectstatic: static이라는 파일을 한 곳에 모을 수 있다.

파이썬 장고(django) 웹 프레임워크 개념 정리

장고 튜토리얼 사이트

우선 기본적으로 장고에 대한 튜토리얼에 대한 사이트는 아래와 같다.

해당 사이트들을 참고해서 만든 유튜브 강의들도 많으니 조금 서칭해서 찾아보시길 권한다.

tutorial.djangogirls.org/ko/

 

들어가며 · HonKit

1차 : 2015. 10. 1. 이수진, 함기훈, Jay Park, 조혜선, 정광윤, 임정훈, 문지영, 김휘경, 송석리, 여형석, 심혜민

tutorial.djangogirls.org

docs.djangoproject.com/ko/3.1/intro/tutorial01/

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com


참고목록 및 출처

https://www.youtube.com/watch?v=LYmZB5IIwAI

참고: 원큐 유튜브

https://www.essenceandartifact.com/2012/12/the-essence-of-mvc.html

 

Essence of MVC

The Model-View-Controller pattern (MVC) was first described at Xerox PARC by Trygve Reenskaug in 1979: MVC was conceived as a general sol...

www.essenceandartifact.com


태그

#장고 #파이썬 #django #python #web #djangogirls #웹

+ Recent posts