Django Tutorial 따라가기
https://docs.djangoproject.com/ko/4.0/intro/tutorial01/
목표
- 간단한 설문조사( Polls ) 어플리케이션 제작
- 투표 가능한 개방 사이트 구현
- 관리자 전용 사이트 구현
프로젝트 생성
$ django-admin startproject {site_name}
생성 파일
- mysite/
- manage.py
- mysite/
- __init__.py
- settings.py
- urls.py
- asgi.py
- wsgi.py
파일 별 역할
- manage.py
: Django 프로젝트와 상호작용하는 커맨드라인 유틸리티
- mysite/
: 프로젝트를 위한 실제 Python 패키지를 저장
( 이 디렉토리 내의 이름을 이용해 프로젝트 어디서나 Python 패키지 임포트 )
- mysite/__init__.py
: Python에게 이 디렉토리를 패키지처럼 다루라고 알려주는 빈 파일
- mysite/settings.py
: Django 프로젝트의 환경 및 구성 저장
- mysite/urls.py
: Django 프로젝트의 URL 선언 저장( = 사이트 목차 )
- mysite/asgi.py
: 프로젝트 서비스를 위한 ASGI-호환 웹 서버의 진입점
- mysite/wsgi.py
: 프로젝트 서비스를 위한 WSGI 호환 웹 서버의 진입점
개발 서버 시작
$ python manage.py runserver
- 개발 서버는 순수 Python으로 작성된 경량 웹 서버로 운영 준비가 될 때까지 Apache와 같은 운영 서비스를 구성할 필요 없이 신속하게 개발할 수 있도록 Django에 포함시켰다.
- 개발 중에만 사용할 수 있도록 되어 있기 때문에 운영 환경과 유사한 환경에서 사용은 자제한다.
- http://127.0.0.1:8000/ 을 통해 접속
- 요청이 들어올 때마다 자동으로 Python코드를 불러오기 때문에 코드 변경사항을 위해 재가동은 불필요( but, 파일 추가 x )
포트 및 IP변경
$ python manage.py runserver 8080
$ python manage.py runserver 0:8000
Project vs APP
- APP
: 블로그, 데이터베이스, 의견조사 등의 작업을 수행하는 웹 애플리케이션
- Project
: 특정 웹 사이트에 대한 구성 및 앱의 모음으로 한 프로젝트에 여러 개의 앱이 포함될 수 있다.
설문조사 앱 생성
$ python manage.py startapp polls
- polls/
- __init__.py
- admin.py
- apps.py
- migrations/
- models.py
- tests.py
- views.py
최상위 URLconf에 polls.urls 모듈 추가
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(0를 만나게 되면 URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 include된 URLconf로 전달한다.
( admin 제외 모든 다른 URL 패턴을 포함할때마다 항상 사용 )
path(route, view, kargs=None, name=None)
- 필수 인수
- route
: URL 패턴을 가진 문자열로 Django는 urlpatterns의 첫 번째 패턴부터 시작해 일치하는 패턴을 찾을 때까지 요청된 URL을 각 패턴과 리스트의 순서대로 비교한다.
- view
: 일치하는 패턴을 찾으면 HttpRequest 객체를 첫번째 인수로 하고 경로로부터 캡쳐된 값을 인수로해서 특정한 view 함수를 호출
- kwargs
: 생략
- name
: URL에 이름을 지어 Django 어디서나 참조하도록 한다.