Django는 python의 framework이다.
대략적인 사용법을 알아보자.
pip install django
django를 설치하는 명령어이다. 이후 MySQL server에 접속하기 위한 package와 cors에 대한 처리를 원할하게 도와줄 플러그인인 django-cors-headers를 설치해준다.
pip install mysqlclient pip install django-cors-headers
위의 명령어들은 가상환경을 만들때마다 설치 해주어야한다.
mysql.server start mysql -u root -p mysql> create database "데이터베이스이름" character set utf8mb4 collate utf8mb4_general_ci;
위의 명령어를 통해 mysql을 시작해주고 들어가 새로운 데이터베이스를 만들어주자.
이제 터미널로 나와 프로젝트를 시작할 경로로 이동해준뒤 아래 명령어를 입력하자.
django-admin startproject '시작할 프로젝트 이름' 폴더 이동 후 python manage.py startapp '시작할 앱 이름'
명령어를 입력시 '시작할 프로젝트 이름'의 폴더가 생성되었을것이다.
dogisfriend라는 프로젝트를 시작했고 내부에 '시작할 프로젝트 이름'의 폴더와 '시작할 앱 이름'의 폴더, 그리고 manage.py가 생성된것을 알 수 있다.
현재 몇번의 수정과 파일 생성을 통해 여러 파일이 추가되어있다. 다만 기본적인 골격은 같다.
우선 가장 먼저 dogisfriend/settings.py를 열어 몇가지 수정해주자.
ALLOWED_HOSTS = ['*']
아까 설치해준 app인 admins와 아까 설치해준 corsheaders를 추가해준뒤(Middleware에도 가장아래 문장을 추가해준다.) 사용하지 않는 admin, csrf, auth에 해당되는 부분을 주석처리 해준다.
그리고 내용중 DATABASE에 아래 내용과 같이 수정해준다.
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '실제 DB 주소',
'PORT': '포트번호',
}
}
그리고 가장 아래 부분에 아래 문장을 추가해준다.
#REMOVE_APPEND_SLASH_WARNING
APPEND_SLASH = False
##CORS
CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
이후 settings.py와 같은 경로에 있는 urls.py에 들어가 아래와 같이 수정해준다.
from django.urls import path
urlpatterns = [
]
이로서 django를 활용하여 database와 소통하기 위한 기본 준비가 되었다.
위의 tree를 보면 앱(여기서는 admin으로 작성하였다)이름 폴더 내부에 models.py라는 파일이 있다.
이곳에 database에 들어가는 모델의 구성을 짤 수 있다.
위의 사진을 보자. django.db라는곳에서 models를 import해온걸 알 수 있다.
django는 기본적으로 여러가지 기능을 지원하는데 그중 databases의 model을 구성할 때 사용하는 부분을 가져온것이다.
여기서 class를 선언하여 테이블을 만들 수 있다.
아래 변수들을 선언하여 테이블의 column을 만들 수 있다.
models. 이후에 붙는 메소드에 대해 간략히 알아보자
문자열을 받는다. max_length에 붙은 숫자만큼 문자열을 쓸 수 있다.
정수를 받는다. -2147483648과 2147483647 사이의 값을 저장할 수 있다.
외부키를 받아오는 필드이다. OneToMany에서 사용된다. 만약 참조를 넣은 방향이 아닌 역방향으로 정보를 가져올때는 아래 방법을 사용한다.
'테이블명'.objects.get('조건').'역참조 테이블명'_set.all()
.objects.get('조건')을 통해 해당 조건에 충족되는 row를 하나 설정하고
'역참조 테이블명'_set.all()를 통해 역참조의 정보를 가져올 수 있다.
Many to Many에서 사용되는 필드이다. 두 필드를 Many to Many관계로 묶어주며 자동으로 '현재테이블이름_연결된테이블이름'으로 새로운 테이블을 생성하지만 through를 통해 직접 테이블을 만든뒤 해당 테이블명을 작성하여 대체할 수 있다.
one to one에서 사용되는 필드이다. 주로 기존의 테이블에 추가 정보를 붙일때 사용하며 위의 Forignkey와는 다르게 서로 참조를 하기때문에 정보를 불러올때 -set.메소드를 사용 할 필요없다.
이제 models.py를 통해 구성을 마쳤으니 이를 databases에 동기화를 시켜주자. manage.py가 있는 장소로 이동한다.
python manage.py makemigrations '앱이름'
명령어를 통해 migration을 하기 위한 준비 파일을 작성하였다.
python manage.py migrate '앱이름'
이를 통해 migration을 마쳤다면 이제 database에 테이블이 작성 되었다.