[Django] MTV 디자인 패턴

    디자인 패턴

    : 소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책

    MVC 디자인 패턴(Model, View, Controller)

    :애플리케이션을 구조화하는 대표적인 패턴(데이터, 사용자 인터페이스, 비즈니스 로직을 분리)

    • 독립적이고 유지보수하기 쉬움

    MTV 디자인 패턴(Model, Template, View)

    : Django에서 애플리케이션을 구조화하는 패턴(MVC와 이름만 다른 개념)

    Django MTV 구조

    프로젝트 구조

    • setting.py: 프로젝트의 모든 설정을 관리
    • url.py: URL과 이에 해당하는 적정한 views를 연결
    • __init__.py: 해당 폴더를 패키지로 인식하도록 설정
    • manage.py: Django 프로젝트와 다양한 방법으로 상호작용하는 커맨드라인 유틸리티

    앱 구조

    • admin.py: 관리자용 페이지 설정
    • models.py: DB와 관련된 Model을 정의
    • views.py: HTTP 요청을 처리하고 해당 요적에 따른 응답을 반환

    Project에서 마저 해보기

    1. testpjt/urls.py 의 경로로 들어가서 urlpatterns 확인서버를 들어가서 주소 뒤에 /admin을 입력하면 다음과 같은 화면을 확인할 수 있음

    urlpatterns = [ path('admin/', admin.site.urls), ]

    2. urls.py에 이전에 추가해둔 articles앱 추가하기

    from django.contrib import admin
    from django.urls import path
    from articles import views            # 추가
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('articles/', views.index),        # 추가
    ]

    다음과 같이 추가를 하면 서버주소/articles/ 로 요청을 할 때, views 모듈의 index 뷰 함수를 호출하게 된다.

    3. articles/views.py의 경로로 들어가 view파일에 index함수를 정의해주기

    from django.shortcuts import render
    
    # Create your views here.
    def index(request):
        return render(request, './articles/index.html')

    함수의 인자로 들어가는 request는 고정

    4. articles 폴더 안에 templates 폴더를 생성해주고, 그 폴더안에 articles 폴더를 생성, 이후 aritcle 폴더 안에 index.html을 만들어 준다.

    Testproject/articles/templates/articles/index.html 의 경로를 가지도록 만들어주기

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
      <body>
        <h1>hello</h1>
      </body>
    </html>

    !+엔터로 html서식을 자동완성 후, h1>hello를 써준다.

    5. 수정한 파일들을 모두 저장 후, 서버를 열어서 주소/articles로 확인할 수 있다.

    'BackEnd > Django' 카테고리의 다른 글

    [Django] Template 상속  (0) 2023.09.13
    [Django] Template System  (0) 2023.09.13
    [Django] Django 프로젝트 만들기  (0) 2023.09.12
    [Django] 가상환경 만들기  (0) 2023.09.12
    [Django] 사전 지식  (0) 2023.09.12

    댓글