django/기본 개념

장고의 구동 flow

monsangter 2022. 11. 2. 01:26

장고의 작동 흐름.

 

1. 웹브라우저에 이벤트가 발생한다(폼 데이터 입력),(URL 요청)

 

2. 액션이 장고 서버로 들어오게 되면 url dispatcher 에서 url을 분석한다.

그리고 url에 적합한 view로 이벤트를 보내주게 된다.

 

3.view는 사용자의 요청을 받아, 어떤 db에 접근해 어떤 데이터를 가공할지

알려주는 역할을 하고,

 

4,model 에서 실질 적 데이터 베이스와 커넥션해 데이터를 가져오게 된다.

 

5.모델은 가져온 데이터를 다시 view에,

 

6.그리고 뷰가 템플릿에 사용자에게 보여줄 데이터를 전송해준다.

 

 

 

 

 

 

 

 

 

 

 

 

 


위쪽에 웹 브라우저단과 서버단이 위치하고 있다.

 

nginx나 apache 등을 웹서버로 사용하고

데이터 베이스는 sqlite, mysql등 다양 한 데이터 베이스 들이 있다.

미들웨어는 우리가 느낄 수 없지만, 다양한 처리를 도와준다.

 

정적 페이지는 정적 파일을 불러 오면 되니 편하다, 하지만 동적 페이지 요청은 웹서버부터 데이터베이스 조회 리턴까지 복잡한 과정이 필요하기 때문에 wsgi 서버가 필요하다.

 

동적 요청이 발생하면 웹서버가 wsgi 서버를 호출 하고, wsgi 에서 대신 파이썬 프로그램을 호출해 동적 페이지 요청을 대신한다.

 

1.브라우저 요청을 보내면 위스키로 신호가 들어오고 

위스키는 장고와 웹 서버를 적절히 결합 시켜주는 역할을 한다.

 

2.위스키 신호가 들어오면 urls.py라는 파이썬 코드에서 받게 되고, urls.py는 정규 표현식으로 작성돼 맞는 view로 보내지게 된다.

 

3.뷰에서는 사용자 요청에 따라 데이터베이스에 데이터를 입력하든지, 데이터를 가져와 가공후 사용자에게 보여줄지 등의 동작을 결정하고

모델에 맞는 신호를 보낸다

 

옛날에는 뷰와 데이터 베이스간의 작업이 굉장히 복잡하고 sql쿼리를 많이 다뤄야했다.

하지만 장고는 그런 과정을 통합해 모델에 변수만 지정해주면 매니저가 db와 연결을 알아서 해준다.

 

4.이후 뷰에서 데이터를 가공해 사용자에게 보여주기 위한 url 작업을 해 템플릿을 만들어 웹서버에 전송하게 된다.

 

템플릿은 html 파일인데, html  파일 안에 우리가 제어와 관련된 다양한 로직을 넣을 수 있다.

뷰에서 받은 데이터를 어떻게 html파일에 잘 보여줄지 스크립된 파일들이 템플릿에 작성되게 된다.

 

템플릿엔 다양한 폼을 작성하게 되는데 그런 폼들은 form.py 폴더에서 다룬다. 모델과 템플릿에 있는 사용자들이 사용하는 ui를 관리한다.

 

뷰에서 데이터를 보내준 것을 템플릿이 ui에 적절히 구성해주고, 정보가 웹서버에 간다. 웹서버는 이것을 사용자에 보낸다

 

 

 

참고

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

https://www.youtube.com/watch?v=Nv_9uZ4ld9U&t=3s 

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