URLs
- URL mapper는 요청 URL을 기준으로 HTTP 요청을 적절한 view로 보내주기 위해 사용한다.
- 또한 URL mappers는 URL에 나타나는 특정한 문자열이나 숫자의 패턴을 일치시켜 데이터로서 뷰 함수에 전달할 수 있다.
- 한 request 가 urlpatterns 에 맞으면 해당 request object는 URLconf에 맞는 vews에 전달되고 해당 view가 invoke된다.
요청을 알맞은 view에 보내기(urls.py)
urlpatterns = [
path('admin/', admin.site.urls),
path('book/<int:id>/', views.book_detail, name='book_detail'),
path('catalog/', include('catalog.urls')),
re_path(r'^([0-9]+)/$', views.best),
]
- mapper(urlpatterns)는 경로들(특정 URL 패턴들)과 해당하는 view함수에 대한 mapping 목록들을 정의한다.
- 만약 지정된 URL 팬턴과 일치하는 HTTP 요청이 수신된다면 관련된 view함수가 요청을 전달한다.
- urlpatterns 객체는 path() 및/또는 re_path() 함수의 리스트(list)이다. 파이썬 리스트는 대괄호를 사용하여 구문되며 항목은 쉼표로 분리되고 선택적으로 후행 쉼표가 있을 수 있다.
- 두 메소드의 첫번째 인수는 일치시킬 경로이다. path()메소드는 꺾쇠 괄호()를 사용해서 인수를 정의한다.
- 이 인수는 URL의 한 부분으로 명명된 인수로써 수집되어 view함수로 보낸진다.
- re_path() 함수는 정규식이라는 유연한 패턴 매칭 접근을 사용한다.
- 두번째 인수는 패턴이 일치할 때 호출되는 다른 함수이다.
- views.book_detail 은 이 함수가 book_detail()이며 views 모듈 안에서 찾을 수 있다는 것을 나타낸다
view
- HTTP요청을 수신하고 HTTP 응답을 반환하는 요청 처리 함수이다.
- view는 model을 통해 요청을 충족시키는데 필요한 데이터에 접근한다. 그리고 템플릿에서 응답의 서식 설정을 맡긴다.
요청 처리하기 (views.py)
## filename: views.py (Django view functions)
from django.http import HttpResponse
def index(request):
# Get an HttpRequest - the request parameter
# perform operations using information from the request.
# Return HttpResponse
return HttpResponse('Hello from Django!')
- 웹클라이언트로 부터 HTTP 요청을 수신하고 HTTP응답을 되돌려주는 웹 어플리케이션의 심장이다.
- 그 사이에 그들은 데이터베이스에 접근하고 템플릿을 렌더링하기 위해 프레임워크의 다른 자원들을 정리한다
- HttpRequest 객체를 (request)의 인자로 받고 HttpResponse 객체를 반환한다.
데이터 쿼리하기(views.py)
list_teams = Team.objects.filter(team_level__exact="U09")
- 장고 모델은 데이터베이스를 간단히 탐색하기 위한 쿼리 API를 제공한다
이 API는 다양한 조건을 통해 수 많은 필드를 빠르게 매칭시킨다.
models
- application의 데이터 구조를 정의하고 데이터베이스의 기록을 관리(추가, 수정, 삭제)하고 query하는 방법을 제공하는 파이썬 객체이다.
데이터 모델 정의하기(models.py)
# filename: models.py
from django.db import models
class Team(models.Model):
team_name = models.CharField(max_length=40)
TEAM_LEVELS = (
('U09', 'Under 09s'),
('U10', 'Under 10s'),
('U11', 'Under 11s'),
... #list other team levels
)
team_level = models.CharField(max_length=3,choices=TEAM_LEVELS,default='U11')
- models라는 파이썬 객체를 통해 데이터를 관리하고 쿼리한다
- 모델은 필드타입과 그들의 최대크기. 기본값들, 목록 옵션, 문서의 도움말 텍스트, form들을 위한 label text등을 포함하여 저장된 데이터의 구조를 정의한다.
- 모델의 정의는 기본 데이터베이스와 별개이다 본인의 프로젝트 설정의 일부로써 여러 모델중 하나를 선택할 수 있으며 본인이 사용할 데이터베이스를 정했다면 그것에 직접적으로 접근할 필요 없다.
Templates
데이터 렌더링하기(HTML 템플릿들)
- 파일의 구조나 레이아웃을 정의하고 실제 내용을 보여주는데 사용되는 플레이스홀더를 가진 텍스트파일이다 .
- view는 HTML 탬플릿을 이용하여 동적으로 HTML페이지를 만들고 model에서 가져온 데이터로 채운다 탬플릿으로 모든 파일의 구조를 정의할 수 있다.
- 요청을 알맞은 view에 보내기(urls.py)
- 요청 처리하기 (views.py)
- 데이터 모델 정의하기(models.py)
- 데이터 쿼리하기(views.py)
- 데이터 렌더링하기(HTML 템플릿들)
출처
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction