Jello's development blog

Jello's development blog

Django 튜토리얼 따라하기 1

들어가며

이번에 Django로 프로젝트를 하게 되면서 먼저 연습해볼 겸 홈페이지에 있는 튜토리얼을 따라해보게 되었다. 프레임워크의 특성 상 고유의 프로세스 방식과 특징이 있기 때문에, 따라하면서 배우게 된 것을 기록할 겸 포스팅하려고 한다.

Python의 버전은 3.5.2, Django의 버전은 1.10으로 하며, Virtual environment를 생성하고 따라해 보는 것을 권장한다. Virtual environment에 대한 포스팅도 추후에 할 예정이다. Github Repository에 기록이 남아있으니 참고해도 좋을 것 같다.

Django(장고)는 무엇인가?

Django는 python으로 만들어진 무료 오픈소스 웹 어플리케이션 프레임워크(web application framework)이다. python의 웹 어플리케이션 프레임워크 중에 가장 유명하고, 일단 한 번 익히면 강력한 기능을 쉽고 빠르게 구현해낼 수 있다.

Django 설치, project 생성

pip를 최신 버전으로 업그레이드하고, Django를 1.10(2016.09.09 최신버전)으로 설치한다.

$ pip install --upgrade pip
$ pip install django==1.10

설치가 끝난 뒤에 mysite라는 이름으로 프로젝트를 생성한다. Django는 명령어 한 줄으로 자동으로 프로젝트를 생성해준다.

$ django-admin startproject mysite

mysite의 구조는 아래처럼 나올 것이다.

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

아래 명령어로 로컬 서버를 켤 수 있다.

$ python manage.py runserver

기본 포트는 8000이므로 http://127.0.0.1:8000/으로 들어가면 생성된 프로젝트를 볼 수 있다. manage.py는 Django의 프로젝트에 관련하여 여러 기능과 역할을 하는 python script가 들어있다. 자주 쓰일 테니 속에 익혀두도록 하자.

첫 화면

app 생성

이제 투표 기능을 만들 polls라는 이름을 가진 app을 만들어보도록 하자. 최상위 디렉토리에서 아래 명령어를 입력한다.

$ python manage.py startapp polls

app과 project의 차이에 대해서 헷갈릴 수 있다. app은 기능 단위로 만들어지는 추상적인 개념 혹은 디렉토리이다. app이 모여서 project가 되고, project는 여러 개의 app과 설정 파일들을 포함한다. 하나의 app은 여러개의 project 안에 들어갈 수도 있다.

polls의 디렉토리 구조는 아래와 같을 것이다.

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

views와 urls 설정

이제 polls/views.py, polls/urls.py, mysite/urls.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.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

mysite/urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
]

먼저 polls app에서 view와 url을 설정해주었다. urls.py는 서버로 요청되는 모든 url을 관리하는 설정파일이다. url의 형태는 regex로 씌여질 수 있으며 해당 regex에 일치하면 그 명령행을 따른다. url()함수는 regex와 view가 필수로 입력되어야 한다.

polls app내에서 url은 기본 (/) 하나밖에 없으며, url 함수의 두 번째 파라미터에 views.index로 설정해주었으므로 views.pyindex함수와 연결되어 있다. 또한 mysite/urls.py내의 urlpatternspolls.urls가 include되었으므로, 웹에서 polls/라는 url으로 들어가면 view.index가 실행되게 된다.

추가로, admin/으로 들어가면 이 프로젝트의 어드민 사이트로 접속되게 설정되어있다.

서버를 실행 한 뒤, http://127.0.0.1:8000/polls에 접속해보면 views.py에서 설정해준대로 문구가 뜰 것이다.