장고의 기능과 기본 프레임 포스팅
Django tutorial: Django로 앱 만들기 예제(템플릿과 관리자 페이지 설정은 여기 실려 있음)
기본 순서
가상환경, 데이터베이스 설치 & 기본 프로그램 설치 -> 장고로 프로젝트 생성, 구성
conda create -n 가상환경이름 python=3.x
현재 깔려있는 파이썬 버전명을 적으면 됨
conda activate 가상환경이름
mysql 접속
mysql -u root -p
mysql 비밀번호 입력
mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;
mysql> create database 데이터베이스이름
까지만 명령해도 데이터베이스가 생성됨
(character set utf8mb4 collate utf8mb4_general_ci; 외국어 입력 및 이모지 입력을 위한 설정)
생성된 데이터베이스 확인
show databases;
mysql에서 나가기
exit
pip install django
가상환경 실행 후 설치
M1은
pip install PyMySQL
그 외엔
pip install mysqlclient
우분투에서 설치 안될떄
sudo apt-get install libmysqlclient-dev
pip install mysqlclient
이후에 MySQL server에 접속하기 위한 package 설치
mysql을 먼저 설치해야 설치할 수 있음
django-admin startproject 프로젝트이름
상위 디렉토리 안에 프로젝트 디렉토리 생성
ALLOWED_HOSTS = ['']
접근을 허락할 IP들을 리스트에 추가
(*
은 모든 IP의 접근을 허용한다는 의미)
Admin 관련 app과 middleware 주석처리
cd 프로젝트디렉토리이름
touch my_settings.py
manage.py가 있는 위치에 생성
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1', #내 컴퓨터의 값
'PORT': '3306', #한 컴퓨터에서 여러 개 가질 수 있는 값
'OPTIONS': {'charset': 'utf8mb4'}
}
}
SECRET_KEY = '시크릿키' # settings.py에 있는 secret_key 를 사용
(ALGORITHM = '알고리즘내용') # 데이터 암호화(bcrypt, JWT)를 하는 경우 설정
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings import DATABASES, SECRET_KEY(, ALGORITHM)
...
DATABASES = DATABASES
SECRET_KEY = SECRET_KEY
(ALGORITHM = ALGORITHM)
settings.py에 my_settings.py의 내용을 import하고 내용을 변경
m1은 settings에 아래 내용 추가
import pymysql
pymysql.install_as_MySQLdb()
pip install django-cors-headers
설치 후 settings.py에 INSTALLD_APPS 안에 아래와 같이 추가
INSTALLED_APPS = [
...
'corsheaders'
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
# request의 header에 올 수 있는 key값들
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
APPEND_SLASH = False
개발할때는 Debug=True
로 해줘야 함
True를 사용하면 터미널에서 다양한 에러 메시지를 받을 수 있음
사이트를 서비스할때는 Debug=False
로 설정
pip freeze
manage.py가 있는 위치에서 위 코드 실행
vi requirements.txt
manage.py가 있는 위치에 생성
m1일 경우 PyMySQL 추가
예시
Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3
# m1의 경우 아래 패키지도 추가
PyMySQL==1.0.2
requirements.txt에서 현재 로컬 가상환경에 설치되지 않은 프로그램 설치
pip install -r requirements.txt
# m1의 경우 아래 패키지도 추가
PyMySQL==1.0.2
python manage.py migrate
python manage.py runserver 포트이름
제대로 동작하는지 확인
(제대로 설정했을 경우 로켓이 날아가는 걸 볼 수 있다)