본문 바로가기

Python django

장고 구조 / 실행, 기본 설정과 데이터베이스 설정

반응형

파이참을 통해 장고프로젝트를 생성했다면, 전혀 보지 못했던 파일들로 머리 아파할 것이다.

장고의 구조를 파악해보자.

djangoProject
├───templates
├───manage.py
└───djangoProject
        settings.py
        urls.py
        wsgi.py
        __init__.py
        asgi.py

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

settings.py 는 웹사이트 설정을 할 수 있다.

urls.py 는 urlresolver 가 사용하는 패턴 목록을 포함한다.

 

설정 변경

기본세팅을 해보자.

먼저 서버의 시간을 세팅하기 위해서 위키피디아 타임존 리스트에 가서 해당 시간대(타임존)를 복사한다. (예: Asia/Seoul)

그리고 Settings.py에서 TIME_ZONE있는 줄을 찾은 후 이를 해당 시간대로 변경한다.

 

/settings.py

    TIME_ZONE = 'Asia/Seoul'

다음으로 정적파일 경로를 추가할 것이다. (정적 파일은 튜토리얼 후반부에서 CSS와 함께 다룰 예정이다.)

파일의 끝(end)으로 내려가서, STATIC_URL항목 바로 아래에 STATIC_ROOT을 추가하세요.

 

DEBUG가 True이고 ALLOWED_HOSTS가 비어 있으면, 호스트는 ['localhost', '127.0.0.1', '[::1]']에 대해서 유효하다.

애플리케이션을 배포할 때  PythonAnywhere의 호스트 이름과 일치하지 않으므로 다음 설정을 아래와 같이 변경해줘야 한다.

 

/settings.py

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

* 크롬북 사용자는 , settings.py 맨 마지막 줄에 아래 코드를 추가한다. 

MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

 

 

데이터베이스 설정

사이트 내 데이터를 저장하기 위 한 다양한 데이터베이스 소프트웨어가 있다. 그 중에서 sqlite3을 사용할 것이다.

sqlite3는 /settings.py 파일안에 이미 설치 되어있다.

 

/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

 

 

 

데이터를 생성하기 위해서 콘솔 창에서 아래 코드를 실행한다.

command-line

python manage.py migrate

manage.py 존재하는 폴더를 루트로 설정한 후 실행해야만 한다.

command-line

(myvenv) ~/djangoproject$ 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

 

웹 서버를 바로 실행해보자. (콘솔에서 다음 명령어를 실행한다)

command-line

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

크롬북 사용자는 아래 명령어를 입력한다. :

Cloud 9

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

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

command-line

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

웹 사이트가 모두 잘 작동하는지 확인해보자. 사용하는 브라우저를 열어서 다음 주소를 입력한다.

browser

http://127.0.0.1:8000/

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

browser

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

 

웹 서버가 실행되는 동안 추가 명령을 입력 할 수있는 새로운 명령어 프롬프트가 표시되지 않는다.

그리고 새 텍스트를 터미널에서 입력할 수 있지만 명령은 실행되지 않습니다.

웹 서버가 들어오는 요청을 수신 대기하기 위해 지속적으로 실행하고 있기 때문이다.

 

웹 서버가 실행되는 동안 추가 명령을 입력하려면 새 터미널 창을 열고 virtualenv를 활성화한다.

웹 서버를 중지하려면 실행중인 창으로 다시 전환하고 CTRL + C - Control+C 키를 함께 누른다.

(윈도우에서는 Ctrl + Break를 눌러야 할 수도 있다.)

반응형