Juni_Dev_log

북마크 앱 만들기 ② "뼈대" with Django 본문

Project/Bookmark APP 만들기 (Django)

북마크 앱 만들기 ② "뼈대" with Django

Juni_K 2020. 8. 18. 18:42

코딩의 시작은 프로젝트 뼈대를 만드는 것에서부터 시작한다.

즉 프로젝트에 필요한 디렉터리 및 파일을 구성하고, 설정 파일을 세팅한다. 그 외에도 기본 테이블을 생성하고, 관리자 계정인 슈퍼유저를 생성하는 것이 필요하다.

프로젝트가 만들어지면, 그 하위에 애플리케이션 디렉터리 및 파일을 구성한다. 장고는 이런 작업을 위해서 장고 셸 커맨드를 제공한다.

 


1. 프로젝트 생성

가장 먼저 mysite 프로젝트를 생성한다. mysite는 원하는 프로젝트 명칭을 입력하면 된다.

 

# vDjBook 가상환경을 실행한다.
cd VENV/vDjBook/Scripts/activate

# 프로젝트를 생성할 폴더로 이동해서, startproject를 실행한다. 이름은, Bookmark_site로 한다. (vDjBook) django-admin startproject Bookmark_site

생성하고서 파일을 확인해보면,

2020-08-13 오후 08:02 <DIR> Bookmark_site
2020-08-13 오후 08:02 691 manage.py

////////////////////////////////////////////////////////// (Bookmark_site의 하위)
2020-08-13 오후 08:02 419 asgi.py
2020-08-13 오후 08:02 3,212 settings.py
2020-08-13 오후 08:02 776 urls.py
2020-08-13 오후 08:02 419 wsgi.py
2020-08-13 오후 08:02 0 __init__.py

하위 Bookmark_site 디렉터리는 프로젝트 디렉러티이고, 상위 Bookmark_site 디렉터리는 프로젝트 관련 디렉터리/파일을 모으는 역할만 하는 디렉터리이다.

상위 디렉터리 Bookmark_site 디렉터리는 특별한 의미를 가지고 있지 않기 때문에 이름을 변경해도 무방하다. 하위의 디렉터리 이름과 동일해서 혼동할 수 있으므로 ch99라고 변경한다.

 

# 변경할 폴더가 있는 곳에서 코드를 실행한다. Bookmark_site -> ch99로 변경
move Bookmark_site ch99

 


2. 프로젝트 설정 파일 변경

settings.py 파일에 필요한 사항을 지정한다.

Database, INSTALLED_APPS, TIME_ZONE 항목 등 7가지를 지정하거나 확인할 것이다.

프로젝트를 사용하면서 사용할 항목이기 때문에, 미리 확인해두는 것이다.

프로젝트를 시작할 때는, 이 항목들에 대해 수정이나 추가가 필요한지 확인하는 습관을 갖도록 한다. 물론 필요한 항목이 있으면, 원하는 항목을 이 파일에 지정해주면 된다.

settings.py를 연다.

(그동안 cmd로 작성했지만, vim을 통해서 파일을 열고 수정해야 하기 때문에 git bash를 이용해서 리눅스 명령어로 진행한다.)

 

https://zeddios.tistory.com/122

 

왕초보를 위한 vim 사용방법

ㅎㅎ안녕하세요 :) 오늘은 vim에 대해서 알아볼거에요. 오늘 우리가 할 거는 1. vim이 무엇이냐? 2. vim을 어떻게 쓸 것이냐? 입니다. 시작해볼게요 :) 참고로 저도 못해서 ㅠㅠ 이 글을 쓰는이유는 알

zeddios.tistory.com

# 가상 환경 vDjBook 실행
source cd/VENV/vDjBook/Scripts/activate

# settings.py 가 있는 장소까지 이동
cd/Desktop/장고 공부/Bookmark APP/ch99/mysite

# vim을 통해서 수정 파일로 이동
vim settings.py

 

① ALLOWED_HOSTS 항목을 적절하게 지정해야 한다.

장고는 DEBUG=True 면 개발 모드로, False면 운영 모드로 인식한다. 운영모드인 경우, ALLOWED_HOSTS에 반드시 서버의 IP나 도메인을 지정해야 하고, 개발 모드인 경우에는 값을 지정하지 않아도 ['localhost', '127.0.0.1']로 간주한다. 지금은 개발 모드이고, 장고의 runserver를 가동 할 서버의 IP가 127.0.0.1뿐만 아니라, 192.168.56.101 일 수도 있다. 그렇기에 값을 지정한다.

(vim을 통해서 편집기에 들어가서 i를 누르고 수정한 후, esc를 누르고, :w를 눌러서 저장을 하고 :q를 하면 종료된다.)

 

ALLOWED_HOSTS = ['192.168.56.101', 'localhost', '127.0.0.1']

 

② 프로젝트에 포함되는 애플리케이션 모두 설정 파일에 등록해야 한다.

따라서 startapp 명령으로 애플리케이션을 생성했다면 설정 파일에 등록하는 것을 잊으면 안 된다.

 

③ 템플릿 관련 사항도 확인한다.

보통 DIRS 항목을 제외한 나머지 항목들은 변경하지 않고 사용한다. DIRS 항목은 프로젝트 템플릿 파일이 위치할 디렉터리를 지정한다. 템플릿 파일을 찾을 때, 프로젝트 템플릿 디렉터리는 애플리케이션 템플릿 디렉터리 보다 먼저 검색한다. TEMPLATES 부분에 'DIRS' 부분에 해당 코드를 넣는다.

'DIRS' : [os.path.join(BASE_DIR, 'templates')],

 

④ 프로젝트에 사용할 데이터베이스 엔진이다. 장고는 디폴트로 SQLite3 데이터베이스 엔진을 사용하도록 설정되어있다. 

물론, 다른 데이터베이스 엔진으로 변경할 수도 있다. MySQL로 변경하고 싶다면, settings.py 파일에서 수정해주면 된다. (나는 MySQL로 진행할 것이다.)

 

https://dojunblog.wordpress.com/2017/02/20/django%EC%97%90%EC%84%9C-pymysql%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-mysql-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0/

 

Django에서 pymysql을 이용해 mysql 연동하기

왜인지 모르겠지만 MySQL에서 공식으로 제공하는 모듈은 python2만 지원하는 것 같습니다. 그래서 제가 옛날부터 사용해왔던 pymysql을 이용해서 Django에 MySQL연동하는 법을 포스팅하겠습니다. Django와

dojunblog.wordpress.com

 

⑤ 타임존 지정하기.

처음에는 세계 표준시로 되어있는데, 한국 시간으로 변경한다.

TIME_ZONE = 'Asia/Seoul'

위와 같이 코드를 변경한다.

 

 

⑥ 정적 파일에 대한 설정이다.

STATIC_URL 항목은 최초 settings.py 파일이 만들어질 때, 장고가 지정해준 그대로이고, STATICFILES_DIRS 항목은 프로젝트 정적 파일이 위치한 디렉터리를 의미한다.

개발자가 직접 지정한다.

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

을 추가한다.

 

⑦ 미디어 관련 사항을 지정한다.

파일 업로드 기능을 개발할 때, 필요한 설정이다.

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

지금까지 설정 파일에 대한 7개 항목 이외에도 특정 앱에서 필요한 항목이나 임의로 원하는 항목을 추가, 삭제해도 된다.

USE_TZ = False

DB에 저장되는 시간도 UTC 가 아니라, 한국시간으로 저장된다.

LANGUAGE_CODE = 'ko-kr'

언어를 한글로 지정하면, Admin 사이트 화면의 메뉴 및 설명 등이 한글로 표시된다.

날짜/시간 표현도 달라 진다.

 


3. 기본 테이블 생성

기본 테이블 생성을 위해서 명령을 실행한다.

migrate 명령은 데이터베이스에 변경사항이 있을 때, 이를 반영해주는 명령이다.

(vDjBook) python manage.py migrate

4. 슈퍼유저 생성

Admin 사이트에 로그인하기 위한, 관리자를 만들어보자.

python manage.py createsuperuser

 


5. 애플리케이션 생성

북마크 앱을 만드는 명령을 실행한다.

python manage.py startapp bookmark

6. 애플리케이션 등록

프로젝트에 포함되는 애플리케이션을 모두 설정 파일에 등록되어야 한다.

따라서 우리가 개발하고 있는 북마크 앱도 settings.py 에 등록해야 한다.

애플리케이션의 모듈 명인 'bookmark'만 등록해도 되지만, 애플리케이션의 설정 클래스로 등록하는 것이 더 정확한 방법이다.

apps.py 파일에 BookmarkConfig라고 정의하고 있다.

그래서, 장고가 설정 클래스를 찾을 수 있도록 모듈경로까지 포함해서, 'bookmark.apps.BookmarkConfig'라고 등록한다.

 

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bookmark.apps.BookmarkConfig',
]

 


(이전 포스팅)

2020/08/14 - [Project/Bookmark APP 만들기 (Django)] - 북마크 앱 만들기 ① with Django

 

북마크 앱 만들기 ① with Django

장고 프로젝트를 진행하기 위해서 어떻게 앱을 설계할지 먼저 생각해보자. 사용자에 눈에 보이는 화면 -> UI 화면에 접속하기 위한 -> URL 서버에 필요한 테이블 및 처리 로직 등을 설계한다. 1. 화�

juni-dev-log.tistory.com

 

(다음 포스팅)

2020/08/18 - [Project/Bookmark APP 만들기 (Django)] - 북마크 앱 만들기 ③ "모델(Model)" with Django

 

북마크 앱 만들기 ③ "모델(Model)" with Django

모델 작업은 데이터베이스에 테이블을 생성하도록 해주는 작업이다. 1. 테이블 정의 북마크 앱은 Bookmark 테이블 하나만 필요하다. 테이블은 models.py에 정의한다. (bookmark/models.py) class Bookmark(models..

juni-dev-log.tistory.com

 

Comments