TIL9: django

Seoyul Kim·2020년 4월 4일
0

Django

목록 보기
1/12
post-custom-banner

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에서 가져온 데이터로 채운다 탬플릿으로 모든 파일의 구조를 정의할 수 있다.

  1. 요청을 알맞은 view에 보내기(urls.py)
  2. 요청 처리하기 (views.py)
  3. 데이터 모델 정의하기(models.py)
  4. 데이터 쿼리하기(views.py)
  5. 데이터 렌더링하기(HTML 템플릿들)

출처
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Introduction

post-custom-banner

0개의 댓글