나의 첫 번째 장고 프로젝트!

Note 이 장의 일부는 Geek Girls Carrots (http://django.carrots.pl/)의 튜토리얼을 기초로 작성되었습니다.

Note 이 장의 일부는 Creative Commons Attribution-ShareAlike 4.0 International License에 준수하여 django-marcador 튜토리얼를 기초로 작성되었습니다. django-marcador 튜토리얼 저작권은 Markus Zapke-Gründemann et al이 소유하고 있습니다.

아주 간단한 블로그 사이트를 만들어 볼 거예요!

첫 단계는 장고 프로젝트를 시작하는 거예요. 다시 말해 장고의 기본 골격을 만들어주는 스크립트를 실행할 거예요. 이 디렉토리와 파일 묶음은 나중에 사용할 것입니다.

장고에서는 디렉토리와 파일명이 매우 중요하답니다. 파일명을 마음대로 변경해서도 안되고 다른 곳으로 옮겨도 안됩니다. 장고는 중요한 것들을 찾을 수 있게 특정한 구조를 유지해야 합니다.

모든 작업은 가상환경(virtualenv) 안에서 해야 하는 것을 꼭 기억하세요. 현재 콘솔 창에서 접두어로 (myvenv)가 안 보인다면 먼저 virtualenv를 활성화해야 합니다. Django 설치하기 장에서 virtualenv 작동법에 대해 배웠어요. 윈도우에서는 myvenv\Scripts\activate를 타이핑하고, 맥 OS과 리눅스에서는 source myvenv/bin/activate을 입력하세요.

macOS / Linux

맥 OS과 리눅스 콘솔에서는 다음과 같이 명령을 실행해야해요. 명령어 끝에 .(점, 마침표)을 입력하는 것을 잊지마세요. :

command-line

(myvenv) ~/djangogirls$ django-admin startproject mysite .

.은 현재 디렉토리에 장고를 설치하라고 스크립트에 알려주기 때문에 중요해요. (축약된 표시입니다)

Note 위 명령을 입력할 때 django-admin로 시작하는 부분만 입력하세요. 여기에 보이는 (myvenv) ~/djangogirls$부분은 커맨드 라인에 입력을 가져오게 하는 메세지(프롬트프 prompt)입니다.

Windows

윈도우에서도 명령 끝에 .(점)을 입력하는 것을 잊지마세요 :

command-line

(myvenv) C:\Users\Name\djangogirls> django-admin.py startproject mysite .

.은 현재 디렉토리에 장고를 설치하라고 스크립트에 알려주기 때문에 중요해요. (축약된 표시입니다)

Note 위 명령을 입력할 때 django-admin.py로 시작하는 부분만 입력하세요. 여기에 보이는 (myvenv) C:\Users\Name\djangogirls>부분은 커맨드 라인에 입력을 가져오게 하는 메세지(프롬프트 prompt)입니다.

django-admin.py은 스크립트로 디렉토리와 파일들을 생성합니다. 스크립트 실행 후에는 아래와 같이 새로 만들어진 디렉토리 구조를 볼 수 있을 거예요.

djangogirls
├───manage.py
└───mysite
        settings.py
        urls.py
        wsgi.py
        __init__.py

manage.py는 스크립트인데, 사이트 관리를 도와주는 역할을 합니다. 이 스크립트로 다른 설치 작업 없이, 컴퓨터에서 웹 서버를 시작할 수 있습니다.

settings.py는 웹사이트 설정이 있는 파일입니다.

앞에 우편배달부는 어느 곳으로 편지를 배달해야 하는지 판단해야 한다고 말했던 것을 기억하고 있나요? urls.py파일은 urlresolver가 사용하는 패턴 목록을 포함하고 있습니다.

지금 그 파일들을 수정하지 않을 거니 무시하세요. 실수로 파일을 지우지 않게 조심하세요!

설정 변경

mysite/settings.py을 조금 고쳐 볼게요. 설치한 코드 에디터를 열어 파일을 열어주세요.

웹사이트에 정확한 현재 시간을 넣으면 좋겠죠. 위키피디아 타임존 리스트에 가서 해당 시간대(타임존)를 복사하세요. (예: Asia/Seoul)

Settings.py에서 TIME_ZONE있는 줄을 찾으세요. 그리고 이를 해당 시간대로 변경하세요.

mysite/settings.py

    TIME_ZONE = 'Asia/Seoul'

다음으로 정적파일 경로를 추가할 거에요. (정적 파일은 튜토리얼 후반부에서 CSS와 함께 다룰 거에요) 파일의 끝(end)으로 내려가서, STATIC_URL항목 바로 아래에 STATIC_ROOT을 추가하세요.

mysite/settings.py

STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'static'

DEBUGTrue이고 ALLOWED_HOSTS가 비어 있으면, 호스트는 ['localhost', '127.0.0.1', '[::1]']에 대해서 유효합니다. 애플리케이션을 배포할 때 PythonAnywhere의 호스트 이름과 일치하지 않으므로 다음 설정을 아래와 같이 변경해줘야 합니다. :

mysite/settings.py

ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']

Note 크롬북 사용자는, settings.py 맨 마지막 줄에 아래 코드를 추가하세요. : MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

데이터베이스 설정하기

사이트 내 데이터를 저장하기 위한 많은 다양한 데이터베이스 소프트웨어들이 있습니다. 그중에서 우리는 sqlite3을 사용할 거예요.

이미 mysite/settings.py파일 안에 설치가 되어있어요.

mysite/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

블로그에 데이터베이스를 생성하기 위해서 콘솔 창에서 아래 코드를 실행하세요. : python manage.py migrate (이 명령을 실행하기 위해서는 djangogirls디렉터리 안에 있는 manage.py가 필요합니다)

잘 작동되면, 아래와 같은 내용이 나옵니다.

command-line

(myvenv) ~/djangogirls$ python manage.py migrate
Operations to perform:
  Apply all migrations: auth, admin, contenttypes, sessions
Running migrations:
  Rendering model states... DONE
  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 sessions.0001_initial... OK

잘했어요! 이제 웹 서버를 시작해 웹 사이트가 잘 작동하는지 확인해봐요!

프로젝트 디렉토리(djangogirls)에 manage.py파일이 있어야 합니다. 콘솔에서는 python manage.py runserver명령을 실행해, 웹 서버를 바로 시작할 수 있습니다.

command-line

(myvenv) ~/djangogirls$ python manage.py runserver

크롬북 사용자는 아래 명령어를 입력하세요. :

Cloud 9

(myvenv) ~/djangogirls$ python manage.py runserver 0.0.0.0:8000

윈도우에서 UnicodeDecodeError오류가 난다면 아래 명령을 대신 써보세요. :

command-line

(myvenv) ~/djangogirls$ python manage.py runserver 0:8000

웹 사이트가 모두 잘 작동하는지 확인해봐요. 사용하는 브라우저(파이어폭스, 크롬, 사파리, 인터넷 익스플로어 등 여러분의 원하는 대로)를 열어서 주소를 입력하세요.

browser

http://127.0.0.1:8000/

크롬북 사용자는 항상 테스트 서버를 통해 접근해야 합니다.:

browser

https://django-girls-<your cloud9 username>.c9users.io

축하해요! 여러분은 방금 웹 서버를 활용한 첫 웹사이트를 만들었어요! 정말 멋지죠?

It worked!

웹 서버가 실행되는 동안 추가 명령을 입력 할 수있는 새로운 명령어 프롬프트가 표시되지 않습니다. 새 텍스트를 터미널에서 입력할 수 있지만 명령은 실행되지 않습니다. 웹 서버가 들어오는 요청을 수신 대기하기 위해 지속적으로 실행하고 있기 때문이에요.

인터넷은 어떻게 작동될까요 장에서 웹 서버에 대해 배웠었어요.

웹 서버가 실행되는 동안 추가 명령을 입력하려면 새 터미널 창을 열고 virtualenv를 활성화하세요. 웹 서버를 중지하려면 실행중인 창으로 다시 전환하고 CTRL + C - Control+C 키를 함께 누르세요. (윈도우에서는 Ctrl + Break를 눌러야 할 수도 있습니다)

다음 단계로 넘어갈 준비가 되셨나요? 새로운 것을 또 배워볼까요!

results matching ""

    No results matching ""