Django Tutorial Part.1

BLAKE KIM·2020년 7월 28일
0

첫 번째 장고 앱 작성하기, part 1

django 버전 확인

python -m django --version
# 나는 3.0.8

프로젝트 만들기

코드를 저장할 디렉토리로 이동 한 후

django-admin startproject mysite

명령어를 실행하면 해당 디렉토리에 mysite 디렉토리가 생성된다. mysite 디렉토리의 내부 구조는 다음과 같이 생성된다.

mysite/				#1
    manage.py			#2
    mysite/			#3
        __init__.py		#4
        settings.py		#5
        urls.py			#6
        asgi.py			#7
        wsgi.py			#8

1.mysite/

바깥의 mysite 디렉토리는 프로젝트를 감싸고 있는 root 디렉토리이다. 이 디렉토리의 이름은 Django에 영향을 주지 않으니 원하는 걸로 바꿔도 무관하다.

2.manage.py

Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 입니다. manage.py 에 대한 자세한 정보는 django-admin and manage.py 에서 확인할 수 있습니다.

3.mysite/

디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 이 디렉토리 내의 이름을 이용하여, (mysite.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 임포트할 수 있습니다. 바꾸면 안된다.

4.mysite/init.py

Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.

5.mysite/settings.py

현재 Django 프로젝트의 환경 및 구성을 저장합니다. Django settings에서 환경 설정이 어떻게 동작하는지 확인할 수 있습니다.

6.mysite/urls.py

현재 Django project 의 URL 선언을 저장합니다. Django 로 작성된 사이트의 "목차" 라고 할 수 있습니다. URL dispatcher 에서 URL 에 대한 자세한 내용을 읽어보세요.

7.mysite/asgi.py

현재 프로젝트를 서비스하기 위한 ASGI 호환 웹 서버의 진입점입니다. How to deploy with ASGI를 읽어보세요.

8.mysite/wsgi.py

현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점입니다. How to deploy with WSGI를 읽어보세요.

Django 프로젝트가 제대로 동작하는지 확인

python manage.py runserver	# 서버 실행 명령어

어플 생성

python manage.py startapp polls

# 생성된 어플 디렉토리 구조
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

polls/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

polls/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

mysite/urls.py

다음 단계는, 최상위 URLconf(mysite/urls.py) 에서 polls.urls 모듈을 바라보게 설정합니다. mysite/urls.py 파일을 열고, django.urls.includeimport 하고, urlpatterns 리스트에 include() 함수를 다음과 같이 추가합니다

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

include() 함수는 다른 URLconf들을 참조할 수 있도록 도와줍니다. Django가 함수 include()를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 includeURLconf로 전달합니다.

include()에 숨은 아이디어 덕분에 URL을 쉽게 연결할 수 있습니다. polls 앱에 그 자체의 URLconf(polls/urls.py)가 존재하는 한, "/polls/", 또는 "/fun_polls/", "/content/polls/"와 같은 경로, 또는 그 어떤 다른 root 경로에 연결하더라도, 앱은 여전히 잘 동작할 것입니다. include() 함수를 사용해야 할 때는 다른 URL 패턴을 포함할 때마다 항상 include()를 사용해야 합니다. admin.site.urls가 유일한 예외입니다.

path()

path(route, view, **kwargs, name)

path() 함수에는 2개의 필수 인수인 routeview, 2개의 선택 가능한 인수로 kwargsname 로 정의되어 있다.

route

routeURL 패턴을 가진 문자열 입니다. 요청이 처리될 때, Djangourlpatterns 의 첫 번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때 까지 요청된 URL 을 각 패턴과 리스트의 순서대로 비교합니다.

패턴들은 GET 이나 POST 의 매개 변수들, 혹은 도메인 이름을 검색하지 않습니다. 예를 들어, https://www.example.com/myapp/ 이 요청된 경우, URLconf 는 오직 myapp/ 부분만 바라 봅니다. https://www.example.com/myapp/?page=3, 같은 요청에도, URLconf 는 역시 myapp/ 부분만 신경씁니다.

view

Django 에서 일치하는 패턴을 찾으면, HttpRequest 객체를 첫번째 인수로 하고, 경로로 부터 '캡처된' 값을 키워드 인수로하여 특정한 view 함수를 호출합니다.

kwarg

임의의 키워드 인수들은 목표한 view에 사전형으로 전달된다.

name

URL에 이름을 지으면, 템플릿을 포함함 Django 어디에서나 명확하게 참조할 수 있습니다. 이 강력한 기능을 이용하여, 단 하나의 파일만 수정해도 project내의 모든 URL패턴을 바꿀 수 있도록 도와줍니다.

profile
BackEnd

0개의 댓글