https://docs.djangoproject.com/ko/3.0/intro/tutorial01/
장고 튜토리얼을 시작합니다.(part 4까지만 다룰 예정입니다.)
튜토리얼에서는 설문조사 기능이 있는 mysite라는 프로젝트를 장고로 만드는 과정을 진행합니다.
$ python -m django --version
잘 설치 됐다면 현재 버전이 표시가 됩니다.
$ django-admin startproject mysite
mysite란 폴더가 하위에 생성되고 폴더 안을 보면 아래와 같이 manage.py
파일과 프로젝트명과 동일한 mysite
폴더가 만들어졌습니다.
mysite
├── manage.py
└── mysite
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
프로젝트가 잘 만들어졌고 제대로 동작하는지 확인해 보겠습니다. manage.py
파일 실행은 항상 이 파일이 있는 폴더에서 해야 합니다.
$ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
February 05, 2020 - 05:42:01
Django version 3.0.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
위와 같이 뜨면 정상입니다. http://127.0.0.1:8000 를 열면 확인할 수 있습니다.
ctrl + c
를 누르면 서버를 종료합니다. (커맨드 창에서 복사하기는 ctrl + shift + c
/ 붙여넣기는 ctrl + shift + v
입니다.)
앱은 웹서비스 중 하나의 기능(메뉴 또는 페이지)이라고 보시면 됩니다.
$ python manage.py startapp polls
polls
라는 또 다른 폴더와 함께 db.sqlite3
라는 장고에서 사용하는 데이터베이스가 생겼습니다. models.py 파일이 만들어져서 생긴 것으로 보입니다.
mysite
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── settings.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── wsgi.cpython-37.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── polls
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
polls
폴더에서 $ vim views.py
명령어로 파일을 얼어 아래와 같이 편집합니다.
HttpResponse 클래스 설명
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
만든 뷰를 호출하려면 url을 연결해줘야 합니다. 아래 명령어로 polls 폴더 안에 urls.py 파일을 생성함과 동시에 편집합니다.
$ vim urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls')),
]
여기까지 하고 서버에 잘 반영이 됐는지 아래 링크에서 확인해 봅니다.
$ python manage.py runserver
http://localhost:8000/polls
정상이라면 Hello, world. You're at the polls index.
문구가 보이게 됩니다.