ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [모각코 23-1] 8회차-Django
    학교생활/23-1 '모여서 각자 코딩' 2023. 5. 17. 16:54
    728x90

     

    Django(이하 장고)는 2005년에 Python 의 오픈소스 웹 프레임워크로 처음 등장하였습니다.

     

    스스로를 배터리 팩(Battery Pack)이라고 부를 정도로 구현에 필요한 다양한 기능들이 들어가있습니다. 

    그래서 풀 스택 프레임워크라고 불립니다. 

    반대로 다른 유명한 파이썬 웹 프레임워크인 플라스크(Flask)는 마이크로 프레임워크라고 불립니다.


    로그인, 회원가입, 인증, CORS 와 같이 거의 대부분의 사이트에서 사용하는 기능이 기본 모듈로 제공됩니다. 

    장고를 사용하는 많은 이들은 Admin 이라는 핵심 기능을 이용하여 관리사이트를 운영하는 경우가 많습니다.

     


    소프트웨어 디자인 패턴 - MVC

    소프트웨어 개발을 위한 여러 디자인 패턴 , 웹 서비스에 자주 사용되는 패턴으로 MVC 디자인 패턴이 있습니다.

    MVC Model, View, Controller 앞글자를 따서 MVC 패턴이라고 부르며, 애플리케이션을 세 가지의 역할로 구분하는 개발 방법론입니다.

     

    이는 Spring 이나Django 등에서 활용되고 있는 패턴입니다.

     

     사용자는 Controller를 조작하고, Controller Model을 통하여 데이터를 가져오게 되며, 그 정보를 바탕으로 시각적인 표현을 담당하는 View 통해 사용자에게 전달하게 됩니다.

    사용자의 입장에서, 사용자는 Controller 통해 입력하고, View 통해 출력을 받습니다. 

     

     위의 그림에는 반영되어있지 않지만, 실제로는 Controller View 영향을 줄 수 있고, Model Controller 정보를 전달할 수도 있습니다.

    Controller Model에 명령을 보냄으로써 Model의 상태를 변경할 수 있어야 하고, 관련된 View에도 명령을 보냄으로써, Model의 표시 방법을 바꿀 수 있어야 합니다.

     

     Model Model의 상태에 변화가 있을 때, Controller View에 해당 내용을 전달합니다. 

     이와 같은 행위를 통해, View는 최신의 결과를 보여주고, Controller Model의 변화에 따라 명령을 추가하거나, 제거하거나, 수정할 수도 있습니다

     

     

    장고는 MVC 가 아닌 MTV

     

    Django에서는 Model, View, Controller 각각 Model, Template, View로 사용하고 있습니다.

    MVC (ex. Spring) MTV (ex. Django)
    Model Model
    View Template
    Controller View

    MVC의 View != MTV 의 View

     

     

    Model의 경우 클래스 형태로 표현되며, 하나의 클래스는 하나의 DB table 입니다. 

    from django.db import models
    from django.contrib.auth.models import User
    
    
    class Question(models.Model):
        author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='author_question')
        subject = models.CharField(max_length=200)
        content = models.TextField()
        create_date = models.DateTimeField()
        modify_date = models.DateTimeField(null=True, blank=True)
        voter = models.ManyToManyField(User, related_name='voter_question')

     

    일반적으로 DB  다루기 위해 SQL 을 다룰 줄 알아야 하지만 

    Django의 경우 ORM(Object Relational Mapping)이라는 데이터베이스 기능을 지원하기 때문에, 

    파이썬 코드를 통해서 DB Handling 가능합니다.

     

     

    Template의 경우 HTML 형태로 구현되며, View에게 받은 데이터를 동적으로 적용합니다. 

    Django에서는 자체적인 Django Template 문법을 지원하며, 이 문법을 통해 동적으로 적용이 가능하다.

     

    View의 경우, MVC 패턴에서의 뷰가 아닌 컨트롤러에 대응된다. 

    요청에 따라 적절한 로직을 수행하고, 결과를 Template에게 전달하는 역할을 한다.

     

    *여기에 장고는 URLConf(URL 설계)라는 단계가 하나 더 있습니다.
    URL 패턴을 정의하여 해당 URL과 뷰를 매핑하는 단계라고 생각하시면 됩니다.

     

    장고의 MTV 구성은 이렇게 되겠습니다.

    728x90
Designed by Tistory.