Framework Django 기초

Hansu Kim·2021년 9월 15일
0

Django

목록 보기
1/10

Documentation : https://docs.djangoproject.com/ko/3.2/

기본 구조

  • 모델, 뷰, 템플릿 3개 계층 - MVT로 구성
  • MVC Pattern 관점에서의 설명
    • Model → Model. DB에 저장되는 데이터를 CRUD
    • View → Template. HTML UI
    • Controller → View. 비지니스 로직 구현. 데이터 요청/수신. 가져온 데이터를 Template에 전달

MVT 처리 과정


1. 클라이언트가 요청시, URLconf를 이용하여 URL 분석
2. URL 분석 결과로 해당 요청을 처리할 View를 결정
3. View는 로직을 수행하며, 필요시 Model을 통해 데이터 처리
4. View는 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML 파일 생성 및 응답

MVT 구성 상세 요소

Model

  • 사용될 데이터에 대한 정의

    models.py (http://models.py) 에서 모델 클래스 정의

  • ORM ( Object-Relational Mapping)과 Raw Query로 DB 관련 코드 작성

    → ORM은 DB를 클래스로 매핑함

ORM (Object-Relational Mapping)

  • 객체와 관계형 데이터베이스를 연결해주는 역할
  • SQL(Structured Query Language)를 사용하지 않고, 데이터베이스 Schema(스키마)를 구성하고,접근할 수 있음
  • 객체를 사용해 데이터를 처리함
  • 데이터를 요청하면 QuerySet을 통해 객체형태로 데이터를 반환

models.py

from django.db import models

class Person(models, Model):
		first_name = models.CharField(max_length=30)
		last_name = models.CharField(max_length=30)

		class Meta:
        db_table = 'myapp_person'
CREATE TABLE myapp_person (
		'id' serial NOT NULL PRIMARY KEY,
		'first_name' varchar(30) NOT NULL,
		'last_name' varchar(30) NOT NULL
);
  • 테이블 이름은 어플리케이션 + "_" + 모델 클래스명 으로 작성하며, 모두 소문자로 표시
  • Primary Key는 굳이 정의하지 않아도 장고에서 자동 부여

URLconf

  • 클라이언트에서 요청 수신시 제일 먼저 수행되는 모듈
  • URL을 urls.py에서 분석하여, 파일에 정의된 URL 패턴과 매칭되는지 분석하고 그에 맞는 View 호출

urls.py

from django.urls import path
from . import views

urlpatterns = [
		path('articles/2003/', views.special_case_2003),
		path('articles/<int:year>/', views.year_archive),
		path('articles/<int:year>/<int:month>', views.month_archive),
		path('articles/<int:year>/<int:month>/<slug:slug>', views.archive_detail),
]
  • URLconf의 URL 패턴 검사 로직이 구현된 파일

  • urls.py를 로딩하여 urlpatterns 변수에 지정되어있는 URL 리스트를 검사

  • 라인 순서대로 URL 리스트의 내용을 검사하며, 패턴 매치시 검사를 종료하고 view를 호출

    → view는 함수 또는 클래스의 메소드

    → view 호출시, HttpRequest 객체와 매칭시 추출된 단어들을 인자값으로 넘겨줌

  • 패턴 매칭 실패시, 에러 처리 view 호출

Path Converter

  • urlpatterns 변수에서 '/' 부분을 지칭
  • URL 패턴의 일부 문자열 추출
  • <type:name> 형식
    • str : / (슬래시)를 제외한 모든 문자열과 매치. 타입이 지정되지 않았다면 디폴트로 str 타입으로 사용
    • int : 0 또는 양의 정수와 매치. 매치된 정수는 파이썬의 int 타입으로 변환
    • slug : slug 형식의 문자열(ASCII, 숫자, 하이픈, 밑줄로만 구성됨)과 매치
    • uuid : UUID 형식의 문자열과 매치. 매치된 문자열은 파이썬의 UUID 타입으로 변환
    • path : / (슬래시)를 제외한 모든 문자열과 매치. URL 패턴의 일부가 아니라 전체를 추출하고자 할 때 많이 사용
  • View 계층에서 정규표현식으로 URL 패턴 로직 구현 가능

View

  • 웹 요청 수신 및 응답 반환

    → HTML, json, xml, Redirection, 404 등등

  • views.py 에서 함수 또는 클래스 메소드 정의

views.py

from django.http import HttpResponse
import datetime

def current_datetime(request):
		now = datetime.datetiem.now()
		html = '<html><body>It is now %s.</body></html>' % now

		return HttpResponse(html)

Template

  • 클라이언트에게 반환되는 HTML(Hyper Text Markup Language)을 작성
  • Django에서 Template 파일을 찾을 때는 settings.py의 TEMPLATES 및 INSTALLED_APPS 에서 지정된 앱의 디렉토리에에서 .html 파일을 찾음
  • .html Django의 template 시스템 문법에 맞게 작성

MVT 패턴 코딩 순서

1. 프로젝트 뼈대 만들기

  • 프로젝트 및 앱 개발에 필요한 디렉토리와 파일 생성

2. Model(모델) 코딩하기

  • 테이블 관련 사항을 개발(models.py[admin.py](http://admin.py/)파일)

3. URLconf 코딩하기

  • URL 및 View 매핑 관계를 정의(urls.py 파일)

4. template(템플릿) 코딩하기

  • 화면 UI 개발(templates/ 디렉토리 하위의 .html 파일)

5. View(뷰) 코딩하기

  • 어플리케이션 로직 개발(views.py 파일)

참조링크 : https://velog.io/@inyong_pang/Django-MVTModel-View-Template-패턴

0개의 댓글