Documentation : https://docs.djangoproject.com/ko/3.2/
1. 클라이언트가 요청시, URLconf를 이용하여 URL 분석
2. URL 분석 결과로 해당 요청을 처리할 View를 결정
3. View는 로직을 수행하며, 필요시 Model을 통해 데이터 처리
4. View는 로직 처리가 끝나면 Template을 사용하여 클라이언트에 전송할 HTML 파일 생성 및 응답
사용될 데이터에 대한 정의
→ models.py (http://models.py) 에서 모델 클래스 정의
ORM ( Object-Relational Mapping)과 Raw Query로 DB 관련 코드 작성
→ ORM은 DB를 클래스로 매핑함
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
);
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 호출
/
(슬래시)를 제외한 모든 문자열과 매치. 타입이 지정되지 않았다면 디폴트로 str 타입으로 사용/
(슬래시)를 제외한 모든 문자열과 매치. URL 패턴의 일부가 아니라 전체를 추출하고자 할 때 많이 사용웹 요청 수신 및 응답 반환
→ HTML, json, xml, Redirection, 404 등등
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)
settings.py
의 TEMPLATES
및 INSTALLED_APPS
에서 지정된 앱의 디렉토리에에서 .html
파일을 찾음.html
Django의 template 시스템 문법에 맞게 작성models.py
, [admin.py](http://admin.py/)
파일)urls.py
파일).html
파일)views.py
파일)참조링크 : https://velog.io/@inyong_pang/Django-MVTModel-View-Template-패턴