클라이언트로 부터 요청을 받으면 URLconf
를 이용하여 URL 을 분석
URL 분석 결과를 통해 해당 URL 에 대한 처리를 담당할 View
를 결정
View
는 자신의 로직을 실행 하면서 만일 데이터 베이스 처리가 필요하면 해당 모델에 요청하고 그 결과를 반환받음
View
는 자신의 로직 처리가 끝나면 Template
을 사용하여 클라이언트에 전송할 HTML 파일을 생성
View
는 최종 결과로 HTML 파일을 클라이언트에 보내어 응답
[Models.py](http://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는 Person 클래스에서 정의하지 않아도 Django에서 자동으로 부여
별도의 Primary Key를 지정할 수 있음
[urls.py](http://urls.py)
파일에 정의된 URL 패턴과 매칭되는지 분석View
를 호출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),
]
[setting.py](http://setting.py)
파일의 ROOT_URLCONF
항목을 읽어 최상위 URLconf(urls.py
)의 위치를 확인urlpatterns
변수에 지정되어 있는 URL 리스틀 검사view
를 호출. 여기서 view
는 함수 또는 클래스의 메소드view
인자로 넘겨준다view
를 호출urlpatterns
변수에서 /
부분을 가르킴<type:name>
형식/
(슬래시)를 제외한 모든 문자열과 매치. 타입이 지정되지 않았다면 디폴트로 str 타입으로 사용/
(슬래시)를 제외한 모든 문자열과 매치. URL 패턴의 일부가 아니라 전체를 추출하고자 할 때 많이 사용view
에서 정규표현식으로 URL 패턴 로직을 구현할 수 있다[views.py](http://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
파일)urls.py
파일)*.html
파일)views.py
파일)