1. Django 설치하기



나만의 홈페이지를 만들고 싶다는 생각은 인터넷을 사용하는 사람이라면 누구나 다 해봤을 것이다.


이에 추가로, 나만의 프로그램을 만드는 것 또한, 개발자라면 한번 쯤 생각 해 봤을 것같다.


필자는 이를 위해 Django 라는 라이브러리를 사용하고 있는데, 사용하기 아주 간단한 파이썬 웹 프레임워크라고 생각하면 된다.


오늘 포스팅에서는 Django를 설치하고, 크롬에서 기본 페이지까지 실행 시키는 방법에 대해 설명하고자 한다.


대부분의 내용이 공식홈페이지(클릭) 을 따라 한 것이나, 본 포스트에서는 초심자가 Windows에서 기본적인 앱을 구동하는 것까지를 목표로 한다.

1. 준비물

파이썬
- pip (파이썬이 있다면 pip도 있다)
- virtualenv (꼭 있어야 하진 않지만 독립된 환경에서 하는 것이 여러모로 유익하다)
- Django

설마 파이썬이 없다면, 아래 링크를 따라서 WinPython을 설치하거나, 본인의 OS에 맞는 python을 설치하고 돌아오자

2017/03/01 - [Python/Tensorflow] - 1. 윈도우에서 Tensorflow 설치하기 (CPU 버전)


1.1 Python

우선 본인의 파이썬 버전을 체크하자. 

명령 프롬프트 (이하 cmd)에서 다음과 같이 2가지 방식으로 자신의 파이썬 버전을 확인 할 수 있다

1. python 열기
 
C:\>python
Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

2. python 버전 쿼리 (추천)


C:\>python -V
Python 3.5.3 

본인의 파이썬 버전을 알았다면, 아래 테이블에서 맞는 Django 버전을 고르자.
필자는 3.5.3 모든 Django 버전을 쓸 수 있다.

Django versionPython versions
1.82.7, 3.2 (until the end of 2016), 3.3, 3.4, 3.5
1.9, 1.102.7, 3.4, 3.5
1.112.7, 3.4, 3.5, 3.6
2.03.4, 3.5, 3.6
2.13.5, 3.6, 3.7


본인 파이썬 버전이 2. 대라면, 3으로 넘어오는 것을 적극 권장한다.


1.2 virtualenv

설치에 앞서, 우선 virtualenv 를 생성해보자. 독립된 환경을 구축해줌으로, 다른 소스와 꼬일일도 없고, 라이브러리는 그대로 가져다가 쓸 수 있다.


특히 WinPython 유저들의 경우, 윈도우에서는 다운받기 상당히 어려운 라이브러리가 포함되어 있으므로 필히 필자와 같이 생성하기 바란다.


우선 가상환경을 생성하고 싶은 곧으로 이동하여, 본인이 원하는 환경 이름으로 아래와 같이 생성한다. 


E:\datamasters>virtualenv --system-site-packges project


--system-site-packages 옵션은 시스템에 이미 존재하는 라이브러리를 그대로 쓰겠다는 옵션으로, 완벽한 독립환경을 원하는 유저들은 빼고 사용하자.


환경이 구축되면 아래와 같이 메시지가 뜬다.


E:\datamasters>virtualenv --system-site-packges project
Using base prefix 'E:\\Python\\python-3.5.3.amd64'
New python executable in E:\datamasters\project\Scripts\python.exe
Installing setuptools, pip, wheel...done.


이제 가상환경이 구축 되었으므로, 가상환경을 활성화 시키자.

방금 만들어진 project의 Scripts 폴더로 이동하여 activate를 실행시키면,

아래와 같이 본인의 프로젝트 이름이 맨 앞에 보여지게 된다.


E:\datamasters>cd project\Scripts
E:\datamasters\project\Scripts>activate
(project) E:\datamasters\project\Scripts>


끝내고 싶다면 언제든지 deactivate를 입력하면 된다.


(project) E:\datamasters\project\Scripts>deactivate
E:\datamasters\project\Scripts>


이제 가상환경 내에서 오늘의 주인공인 django를 받아보도록 하자. 

1.3 Django in virtualenv

필자는 2.0 버전을 선택했는데, 아래와 같이 버전만 입력하면 정확한 버전을 입력하라는 메시지가 뜬다. 여기서 다시한번 고르면 되겠다.


(project) E:\datamasters\project\Scripts>pip install django==2.0
Collecting django==2.0
  Could not find a version that satisfies the requirement django==2.0 (from versions: 1.1.3, 1.1.4, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.3, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 1.4.7, 1.4.8, 1.4.9, 1.4.10, 1.4.11, 1.4.12, 1.4.13, 1.4.14, 1.4.15, 1.4.16, 1.4.17, 1.4.18, 1.4.19, 1.4.20, 1.4.21, 1.4.22, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.5.9, 1.5.10, 1.5.11, 1.5.12, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.6.11, 1.7, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 1.7.9, 1.7.10, 1.7.11, 1.8a1, 1.8b1, 1.8b2, 1.8rc1, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.8.10, 1.8.11, 1.8.12, 1.8.13, 1.8.14, 1.8.15, 1.8.16, 1.8.17, 1.8.18, 1.9a1, 1.9b1, 1.9rc1, 1.9rc2, 1.9, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.9.5, 1.9.6, 1.9.7, 1.9.8, 1.9.9, 1.9.10, 1.9.11, 1.9.12, 1.9.13, 1.10a1, 1.10b1, 1.10rc1, 1.10, 1.10.1, 1.10.2, 1.10.3, 1.10.4, 1.10.5, 1.10.6, 1.10.7, 1.10.8, 1.11a1, 1.11b1, 1.11rc1, 1.11, 1.11.1, 1.11.2, 1.11.3, 1.11.4, 1.11.5, 1.11.6, 1.11.7, 2.0a1, 2.0b1)
No matching distribution found for django==2.0

2.0버전은 2.0a1 가 정식버전인 것이다!


(project) E:\datamasters\project\Scripts>pip install django==2.0a1
Collecting django==2.0a1
  Using cached Django-2.0a1-py3-none-any.whl
Collecting pytz (from django==2.0a1)
  Using cached pytz-2017.3-py2.py3-none-any.whl
Installing collected packages: pytz, django
Successfully installed django-2.0a1 pytz-2017.3

(project) E:\datamasters\project\Scripts>pip freeze
Django==2.0a1
pytz==2017.3

pip freeze는 현재 환경에 설치 된 모든 라이브러리를 보여준다


이제 원하는 버전의 django가 설치되었다! 이것으로 모든 준비물이 완료 되었다.


2. 시작하기

이제 다시 프로젝트 디렉토리로 이동하여, django를 실행하자. myweb 대신 유저가 원하는 이름을 입력하면 된다.

(project) E:\datamasters\project\Scripts>cd ..
(project) E:\datamasters\project>django-admin startproject myweb


아래와 같이 총 5개의 파이썬 파일 (.py)이 생성된다.


(project) E:\datamasters\project>find myweb
myweb
myweb/manage.py
myweb/myweb
myweb/myweb/settings.py
myweb/myweb/urls.py
myweb/myweb/wsgi.py
myweb/myweb/__init__.py


이제 myweb으로 이동하여, djnago 웹서버를 구동시켜보자


(project) E:\datamasters\project>cd myweb
(project) E:\datamasters\project\myweb>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).

You have 14 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.
November 14, 2017 - 15:17:12
Django version 2.0a1, using settings 'myweb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.


위와 같은 이슈가 발생할 수도 있는데, 당황하지 말고 아래와 같이 적용시켜주면 문제없이 구동시킬 수 있다.


(project) E:\datamasters\project\myweb> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying sessions.0001_initial... OK

(project) E:\datamasters\project\myweb>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
November 14, 2017 - 15:18:03
Django version 2.0a1, using settings 'myweb.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.


이제 본인의 브라우저에서 127.0.0.1:8000을 입력하여 Django 시작페이지를 감상하자



위와 같은 화면이 나온다면 기본적인 설치가 모두 완료 되었다. 축하한다.


3. django apps

축하 페이지만 보고 끝내기에는 아쉬운 그대를 위해 튜토리얼까지 진행해보자.

현재 우리는 django 프로젝트를 구축해놓은 상태인데 (필자와 동일하게 했다면 myweb라는 이름으로), 이 안에는 수많은 앱을 제작하여 구동할 수 있다.

project와 app의 차이점은 안드로이드 vs 앱과 거의 유사하다고 생각하면 이해가 쉬울 것이다.

이번에는 django에서 기본으로 제공하는 polls 앱을 설치하고 실행하여 보자.

우선 myweb 디렉토리에서 (manage.py가 있는곳) 아래와 같이 명령어를 실행하자.

(project) E:\datamasters\project\myweb>python manage.py startapp polls

이번에는 아래와 같이 7개의 .py 파일이 생성된다.

(project) E:\datamasters\project\myweb>find polls
polls
polls/admin.py
polls/apps.py
polls/models.py
polls/tests.py
polls/views.py
polls/__init__.py
polls/migrations
polls/migrations/__init__.py

polls 폴더의 views.py를 열고 아래와 같이 수정해 주자.

from django.http import HttpResponse

def message(request):
    return HttpResponse("안녕하세요! Datamasters Polls 앱입니다!")


각 앱의 views.py는 무엇을 보여줄지 정의하는 곳이라고 생각하면 된다. 지금은 튜토리얼 임으로, 간단한 텍스트만 보여주지만, 유저에 따라서 무궁무진하게 꾸밀 수 있다는 점을 명심하자.


이제 내용물을 만들었으니, app이 해당 메시지를 유저와 연결해 줄 수 있도록 url을 수정해야한다. polls 폴더에 urls.py 라는 파일을 직접 만들고, 아래와 같이 채워주자.


from django.conf.urls import url

from . import views

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


마지막으로 myweb 폴더의 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),
]


모두 완성 되었다면, http://127.0.0.1:8000/polls/ 에 접속하여 보자



그대로 따라 했다면 에러없이 바로 뜰 것이다! 


이상으로 Django를 virtualenv에 설치하고, 아주 간단한 메시징 앱을 실행하는 방법에 대해 다루었다.


다음 포스트에서는 메인화면의 구성과 디자인에 대해 다루도록 한다.