====== Django 서버 관리 ======
==== 철학 ====
직원들이나 고객들이 컨텐츠를 수정하기 위한 관리자 사이트를 만드는 것은 딱히 창의적일 필요없는 지루한 작업입니다.
이런 이유로, Django는 모델에 대한 관리용 인터페이스를 모두 자동으로 생성합니다.
Django는 Lawrence Journal-World 신문사의 프로그래머가 처음 개발하였습니다. 이런 태생적인 이유 때문에, 《컨텐츠 게시자》 와 《공개》 사이트의 구분이 명확합니다.
사이트 관리자는 뉴스 기사, 사건, 스포츠 경기 결과 같은 것들을 시스템에 추가합니다. 그렇게 추가된 컨텐츠는 《공개》 사이트에 노출됩니다.
Django는 사이트 관리자가 컨텐츠를 편집할 수 있는 통합적인 인터페이스를 생성하는 문제를 해결합니다.
관리자 사이트는 사이트 방문자를 위한 것이 아니라, 사이트 관리자를 위한 것입니다.
[[python:django:admin|Django Admin]]
===== 서버구동 =====
* 서버실행
$ python manage.py runserver
* localhost:8000로 접속하면 서버페이지를 접속할 수 있다.
===== 관리자 생성하기 =====
우선, 관리 사이트에 로그인 할 수 있는 사용자를 생성해 봅시다. 다음과 같은 명령을 수행합니다.
$ python manage.py createsuperuser
===== DATABASE 설정하기 =====
==== SQLITE3 ====
Django가 기본적으로 제공하는 DB Client
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
==== PostgreSQL ====
* 필요 어댑터 - psycopg2
psycopg2와 psycopg2-binary의 차이가 있다고 하는데 무슨 차이인지는 잘 모르겠다. product버전에서는 psycopg2를 써야하나?
production 환경 또는 성능이 중요한 경우, mysqlclient와 psycopg2를 사용하기를 권장한다.
pip install psycopg2-binary
* 설정파일변경
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': config('POSTGRES_NAME'),
'USER': config('POSTGRES_USER'),
'PASSWORD': config('POSTGRES_PASSWORD'),
'HOST': config('POSTGRES_HOST'),
'PORT': config('POSTGRES_PORT'),
}
}
=== 민감정보숨기기 ===
pip install python-decouple
* 설정파일수정
from decouple import config
SECRET_KEY = config('SECRET_KEY')
* 설정 키-값 : settings.ini파일에 저장
[settings]
SECRET_KEY=ajlsdkfjla;sdjf;lasdjfl;ajdsfl;ajdsl;f
POSTGRES_NAME=pjt2
POSTGRES_USER=unani
POSTGRES_PASSWORD=password
POSTGRES_HOST=hostname
POSTGRES_PORT=5432
==== MySQL ====
* 필요 어답터 - mysqlclient, pymysql
production 환경 또는 성능이 중요한 경우, mysqlclient와 psycopg2를 사용하기를 권장한다.
pip install mysqlclient
* 설정파일변경
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'databaseName',
'USER': 'databaseUser',
'PASSWORD': 'databasePassword',
'HOST': 'localhost',
'PORT': 'portNumber',
}
}