AI Chatbot 만들다!

홀릭스 HOLIX - 공부 중 - Django 소개 및 설치

wy-family 2024. 11. 1. 14:59

https://holix.com/course/development-data/UX25

 

나의 첫 코딩 수업 - AI를 이용한 개발 완벽 가이드 | 홀릭스(HOLIX)

나의 첫 코딩 수업 - AI를 이용한 개발 완벽 가이드

holix.com

 

HTTP request/response 에 대해서 배웠었다.

client 가 request를 보내면

server 가 response 를 하는 통신 방식이다.

 

Django가 server의 역할을 하는 쪽 같다.

 

파이썬 프로세스 안에 장고 엔진이 있는 것.

장고 엔진 위에 장고 어플리케이션을 올리는 것.

 

그러니까,

내 기기 위에서 (내 컴터)

로컬 OS 가 돌아가는 거고 (windows 또는 mac os)

그 위에서 python이라는 프로그램이라고 할 수도 있고 process 라고 할 수도 있는, 파이썬이 돌아가는거고

그리고 그 파이썬 안, 파이썬 위에서 장고 엔진이 있는거고,

장고 엔진도 그러니까 파이썬 위에서 돌아가는 프로그램이라고 볼 수도 있는것.

암튼, 장고 엔진 위에서 여러 개의 어플, 브라우저, 프로그램, 서비스 등이 돌아가는 것.

장고 앱이 있는데,

각각의 장고 앱이 MVC를 가지고 있는것.

Model - 데이터를 추상적으로 저장해놓는 방식, 그러니까 DB 같은 것. 데이터를 저장해놓는 모양.

그래서 장고는 기본적으로 SQLite 라는 게 깔린다고 하는데 아주 가벼운 관계형 데이터베이스라고 함. PostgreSQL 이라는 걸 따로 설치해서 장고랑 같이 사용한다고 함. 

 

View/ Template - 사람들, 이용자들이 보는 거를 보여주는 것, 그래서 User Interface랑 관련이 있음.

template 의 경우에는, 홈페이지를 보여주는 것으로 이해를 하자.

 

Controller / Worker -  데이터를 편집하거나 움직이는 걸 담당, 그래서 worker 라고도 함. worker는 시간 타임라인에 따라서 일을 처리 해주는 거고, controller는 user 의 input에 대해서 처리하는 걸 컨트롤러라고 많이 부름.

장고 프레임워크의 경우에는, 컨트롤러가 View에 들어가 있어서, user 가 view에서 클릭하고 하는 걸 view에서 처리한다고 함.

그래서 template이 보여주는 애들, view가 약간 controller의 역할까지 같이 한다고 함.

 

그래서, MVC 보다는, MVT 라고, Model, View, Template 에 집중하라고 하는데, 아직은 이 말이 무슨 말인지 모르겠음.

 

예를 들어서, chatGPT API 를 콜한다고 하면, 코드를 어떤 형태로, 어디에 써도 콜을 할 수도 있지만,

보통은 View에서 한다는 게 일반적인 패턴이다라는 걸 기억하고 넘어간다.


파이썬, 장고는 끌 수 없는 프로세스라고 함.

그러니까, 외부(컴퓨터 밖)에서 어떤 신호가 오면 내부(컴퓨터 안 - 파이썬과 장고가 실행되고 있는 컴터 안)에서는 그 신호를 받으면 어떤 처리를 해줘야 하기 때문에 계속해서 돌고 있어야 한다.

그래서 그걸 runserver 라고 해서 계속 돌아가게 하는 것.

그래서 그럴 때에는 코드를 수정하면 안 된다.

코드를 교체하려면 서버를 끄고, 교체하고, 다시 가동해야 한다.


Django?

- 서버용 프레임워크, 파이썬 패키지

- ORL - Object Relational Mapping : SQL 없이 OOP 만으로 DB 관리 가능. 관계형 데이터베이스로, OOP 라는게, 클래스가 있으면 표가 생기는 느낌인거고 오브젝트/인스턴스가 생기면 그 표가 채워지는 거라고 했었다. 그런데 SQL도 표를 관리하는 것인데, SQL은 거기서 foreign key, primary key 등 표와 표를 연결하는 것이 있다. 그러니까, object를 관계에 따라서 맵핑하는 것, ORL 이라는 것으로 의해서, OOP 만으로도 DB 관리가 된다는 게 SQL의 형태를 띄고 있기 때문인 것.

- URL Routing을 관리함 : URL을 명시적으로 관리하고, 앱별로 모듈화를 할 수 있어서 유연하게 관리함.

- 관리자 GUI(웹에서 바로 접속) 제공한다는 특징