장고 버전 체크
$ python -m django --version
$ django-admin startproject <프로젝트 이름>
startproject에서 무엇이 생겼는 지 보면
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
manage.py
: Django 프로젝트와 다량한 방법으로 상호작용하는 커맨드라인 유틸리티
mysite/ 디렉토리 내부에는 프로젝트를 위한 python 패키지들이 저장, 이 디렉토리 내의 이름을 이용하여(ex mysite.urls 와 같은 식으로) 프로젝트의 어디서나 python 패키지들을 임포트할 수있다.
mysite/__init__.py
: python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일 입니다.
mysite/__init__.py : python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일
mysite/settings.py : 현재 django 프로젝트의 환경 및 구성을 저장, 여기서 환경 설정이 어떻게 동작하는 지 확인 가능
mysite/urls.py : 현재 django project의 URL 선언을 저장, Django로 작성된 사이트의 목차
mysite/asgi.py : 비동기 서버 게이트웨이 인터페이스
mysite/wsgi.py : 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
10월 26, 2020 - 15:50:53
Django version 3.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Django의 개발 서버의 시작
절대로 개발 서버를 운영 환경에서 사용하지 말 것 오직 개발 목적으로만 사용
$ python manage.py startapp polls
(manage.py가 들어있는 디렉토리에서 실행)
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.")
Django에서 간단한 형태의 뷰 입니다.
- 뷰를 호출하려면 이와 연결된 URL이 있어야 하는데 이를 URLconf
- polls 디렉토리에서 URLconf를 생성하려면 urls.py라는 파일을 생성
polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
- 최상위 URLconf 에서 polls.urls 모듈을 바라보게 설정
- mysite/urls.py 파일을 열고 django.urls.include를 import하고, urlpatterns 리스트에 include()함수를 추가
mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
include() 덕분에 URL을 쉽게 연결할 수 있다.
polls앱에 그 자체의 URLconf (polls/urls.py)가 존재하는 한 "/polls/", 또는 "/fun_polls/"와 같은 경로 또는 그 어떤 다른 root경로에 연결하더라도 앱을 여전히 잘 동작
include()를 언제 사용하는지?
다른 URL 패턴을 포함할 때마다 항상 include()를 사용해야 함 admin.site.urls는 예외
이제 index 뷰가 URLconf에 연결된 상태