작정하고 장고 4강 - django 개발 패턴 : Django로 Pinterest 따라하기!

IkSun·2023년 3월 28일

작정하고 장고

목록 보기
4/46

MVC 개발 패턴

  • 장고에 있어서 가장 중요한 것은 MVC 개발 패턴
  • MVC 는 애플에서 만들었던 개발 패턴중 하나의 방식
  • MVC
    • Model
    • View
    • Controller Template

Model

  • 모델
    • 장고에서 데이터 베이스와 통신을 하게 해주는 편리한 도구
    • 데이터 저장하는 공간, 저장소의 개념(여기서 다양한 데이터를 끌어와서 사용할 수 있음)
  • 객체 만들기
    • 유저의 회원가입
    • 유저에 의해서 계정이 생성되고 유저가 새로은 게시글을 작성(게시글도 하나의 객체)
    • 그때 그 객체를 데이터베이스에 저장을 해야하는데 저장하는 과정에서 그 과정을 편리하게 해주는것이 Model 이다.
    • 장고에서 굳이 DB 쪽 언어를 사용하지 않고도 간편하게 데이터페이스 내용을 수정,삭제 등 여러가지 일을 할수있는 것이 패턴
  • Database
    • 데이터베이스 안에는 Row(행), Column(열) 그리고 각 행의 속성인 Item, Attributes 등이 매칭이 된다.
    • django 에서의 Article 이라는 Item 이 Databsase 의 Row 에 매칭이 되고
      django 에서의 Title, article, image 이라는 Attribute 들이 Database 에서의 Columns 에 매칭이 된다.
    • 그 중간 과정을 해주는것이 모델.
    • 모델을 설정만 해준다면 저장하거나 삭제하거나 수정하거나 모든 일들은 django 가 알아서 처리해준다 \to DB 에 대해서 신경쓰지 않아도 된다.

View

  • 장고에서 계산하는 부분의 대부분을 담당.
  • 연산 수행(실질적인 개발 코드)
  • 유저가 서버에게 우리의 웹 서비스를 요청, 서버에서는 유저의 요청에 대한 응답
  • 과정
    • 유저가 인증이 됬는지 안됬는지
    • 유저가 로그인이 되었다면, 유저가 요청한 정보가 유효한 것들인지
    • 유효 하다면, DB 로 부터 데이터를 가져오기
    • 응답을 만들어서 user 에게 응답
  • 결과적으로 request 를 받아서 되돌려주는것은 View 단계에서 진행한다.

Template

  • 눈에 보여지는 화면(아무 기능이 없음)
  • 실질적으로 Template 안에 구성되어있는것은 HTML, CSS, JavaScript 와 같은 화면에 보여지는 프론트엔드 단의 내용들

Template 역할

  • 일단 유저는 우리가 만든 웹사이트의 UI을 볼것이다. 이 UI 내부에 있는 내용들을 어떻게 구현할 것인가 어떻게 생성해 낼것이냐에 대한 해결책을 주는 것이 template

    HMTL 이라는 정적인 언어에 동적인 내용을 생성하게 해주는 작업을 template 라고 볼수있다.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
    <!-- <title>Title</title> -->
    <title>{{Article.title}}</title>
</head>
</html>
  • 1) 유저가 한 게시글의 내용을 보기위해 어떤 게시글에 대한 요청을 보냄
    2) 그럼 서버에서는 여러가지 앞서 말한 작업들을 거친후 article 이라는 게시글 내용을 전달할것이다.
    3) 그 중간에 HTML 하나만 있다고 가정을 해보면
    4) HTML 내부에서 게시글을 생성해내줄 작업이 필요하다.
    5) HTML 자체로는 정적인 언어이기 떄문에 자체적으로 동적으로 만들어주는것이 바로 template 이다.
  • HTML 문서 내에 Title 을 우리가 "유저로부터 받은" 게시글의 제목으로 바꾸기 위해서 Article 을 <title>{{Article.title}}</title>

  • 이런식으로 쌍 중괄호를 사용해 Article 이라는 객체 내부에 있는 title 이라는 값을 불러와서 HMTL 내부에 직접 생성해줄수 있다.

  • HMTL 자체는 변하지 않고 동적으로 그 내용만 계속 변화시킬 수 있는 기능을 갖게 된것이다.

for 문

<body>

{% for article in article_list %}
	<p>{{ article.title }}</p>
{% endfor %}

</body>
  • 만약에 게시글 하나가 아니라 여러가지 게시글 리스트를 받았다면, template 안에서 for loop 을 돌면서 그 안에 있는 모든 제목들을 출력할 수 있는 이런식의 template 를 구성할 수도 있다.

if 문

<body>

{% if article in article_list %}
	<p>Article exists!</p>
{% endif %}

</body>
  • if 문 같은게 있어서 우리가 article 을 받았는지 안받았는지를 모르는 상태에서 artcle 이 있는지를 확인하고 그 이후에 article 이 존재한다 <p>Article exists!</p> 이런식으로 분기문도 template 안에 작성할 수 있다.

요약

  • 이 모든 3가지의 기능을 살펴보면

  • template 은 유저가 볼수있는 UI 에 굉장히 밀접한 관련이 있고, View 는 계산하는, 예를들어 인증이라던지 계산이라던지 확인 등, 마지막으로 데이터가 저장되는 곳과 쉽게 연결하기 위해서 만들어준것이 Model

profile
공부한 것 기록용

0개의 댓글