복습! Reviewing workflows of Django (MVT pattern)

Hailey Park·2021년 11월 21일
0

Django

목록 보기
7/10
post-thumbnail

Django is based on MVT (Model View Template) architecture and revolves around CRUD (Create, Retrieve, Update, Delete) operations.

  • Model : handles database
  • View : executes the business logic and interact with a model to carry data and renders a template
  • Template : handles User Interface part

The following is a part of Django's design philosophies from Django document.
장고 공식문서에 있는 장고의 철학 중 한 부분을 가져왔다.

Loose coupling
A fundamental goal of Django’s stack is loose coupling and tight cohesion. The various layers of the framework shouldn’t “know” about each other unless absolutely necessary.
For example, the template system knows nothing about Web requests, the database layer knows nothing about data display and the view system doesn’t care which template system a programmer uses.
Although Django comes with a full stack for convenience, the pieces of the stack are independent of another wherever possible.

MVT Process

Django receives an HTTP request from a client through url, analyzes the URL through URLconf, and determines the view to handle processing of the URL.

If view needs to process the database while executing the logic, it makes a request to the model and returns the result.

When the view finishes processing the logic, it uses the template to create an HTML file to send to the client, and responds by sending the HTML file to the client as the final result.

장고는 url을 통해 클라이언트로부터 HTTP 요청을 받아 URLconf를 통해 URL을 분석하고 그 결과를 통해 해당 URL에 대한 처리를 담당할 view를 결정한다.

View는 로직을 실행하면서 데이터베이스 처리가 필요할 경우 해당 모델에 요청하고 그 결과를 반환받는다.

view는 로직 처리가 끝나면 Template을 사용해서 클라이언트에 전송할 HTML 파일을 생성하고, 최종 결과로 HTML 파일을 클라이언트에게 보내어 응답한다.

URLconf

When receiving a request from a client, Django first analyzes the URL in the request, and analyzes whether the URL in the request matches the URL patterns defined in the urls.py file. After analyzing the URL in URLconf, the corresponding mapped View is called.

URLconf maps functions (logic) of URLs and views. Then the User (Client) can access the page through the url.

  • creates urls.py file in an app and maps the logic of views and url by using path.
  • maps urls.py in an app and the root url by using include and path.

클라이언트로부터 요청을 받으면 Django는 가장 먼저 요청에 들어있는 URL을 분석하고, 요청에 들어있는 URL이 urls.py 파일에 정의된 URL패턴과 매칭되는지 분석한다. URLconf에서 URL분석 후 해당 매핑되는 View를 호출한다.

URLconf는 앱에 url.py 파일을 만들고 path 함수를 이용해서 view의 로직과 url을 맵핑한다. 또한, includepath 함수를 이용해서 프로젝트의 root url과 앱의 url을 맵핑한다.

Django uses include to link root URLconf and app.urls module. The include allows you to refer to other URLconfs. (Truncates the URL and append it after the main url.)
When requested by the url in the browser, it is used in the form of /users/ or /content/users/, but if connected with the include function, the address can be entered after the root url. (root url/users/)

장고는 include 를 사용해서 root url과 user.urls 모듈을 연결한다. include 함수는 다른 URLconfs를 참조할 수 있게 한다. (URL을 잘라 main url 다음에 이어붙이게 한다.)
브라우저에서 url로 요청될 때, /users/ 또는 /content/users/ 의 형태로 사용되지만, include 함수로 연결하면, root url 다음에 주소로 들어갈 수 있다. (root url/users/)

urls.py

1) Check the location of the top-level URLconf (urls.py) by reading the ROOT_URLCONF item in the setting.py file
2) Load URLconf and check the list of URLs specified in the urlpatterns variable
3) Inspect the contents of the URL list in order from the top. If the URL pattern matches, the inspection ends.
4) Call the view of the matched URL. When calling, when matching with the HttpRequest object, the extracted words are passed as the view argument.
5) If matching fails even after checking the end of the URL list, the view that handles the error is called

1) setting.py 파일의 ROOT_URLCONF 항목을 읽어 최상위 URLconf(urls.py)의 위치를 확인
2) URLconf를 로딩하여 urlpatterns 변수에 지정되어 있는 URL 리스트를 검사
3) 위에서부터 순서대로 URL 리스트의 내용을 검사하면서 URL 패턴이 매치되면 검사를 종료
4) 매치된 URL의 view 를 호출. 호출 시 HttpRequest 객체와 매칭할 때 추출된 단어들을 view 인자로 넘겨준다
5) URL 리스트 끝까지 검사했는데도 매칭에 실패하면, 에러를 처리하는 view 를 호출

Model

This is a Django class that contains the definition of the data to be used. Writes database-related code with ORM or Raw Query. ORM maps databases to classes.

사용될 데이터에 대한 정의를 담고 있는 Django의 클래스이다. ORM이나 Raw Query로 데이터베이스와 관련된 코드를 작성한다. ORM은 데이터베이스를 클래스로 맵핑한다.

ORM (Object-Relational Mapping)

  • Connect objects and relational databases

  • Handling data using objects

  • When data is requested, data is returned in object form through Queryset

  • Do not use SQL (Structured Query Language), configure the database schema,
    accessible

  • 객체와 관계형 데이터베이스를 연결

  • 객체를 사용해 데이터 처리

  • 데이터를 요청하면 Queryset을 통해 객체형태로 데이터 반환

  • SQL(Structured Query Language)를 사용하지 않고, 데이터베이스 Schema(스키마)를 구성하고,
    접근할 수 있음

View

Receives a web request and executes logic to return a response.
The response message is HTML, Json, xml, Redirection, 404, etc.

웹 요청을 받고 로직을 실행하여 응답을 반환한다.
응답메세지는 HTML, Json, xml, Redirection, 404 등등

Template

Writes the HTML returned to the client

클라이언트에게 반환되는 HTML을 작성

Resources
https://www.javatpoint.com/django-mvt

https://breakout-theworld.tistory.com/6

https://velog.io/@inyong_pang/Django-MVTModel-View-Template-%ED%8C%A8%ED%84%B4

https://www.geeksforgeeks.org/django-crud-create-retrieve-update-delete-function-based-views/

profile
I'm a deeply superficial person.

0개의 댓글