프로젝트 셋팅에 대한 자료가 방대해서 싹다 모아보여 한다.
- 가상 환경 추가 및 적용 (Mac 적용: source venv/bin/activate, Mac 해제: venv/bin/deactivate)
- Django 설치
다음과 같이 업데이트가 가능하다면 pip와 setuptools를 업데이트 한다.
# pip를 최신 버전으로 업데이트
$ python -m pip install --upgrade pip
# setuptools를 최신 버전으로 업데이트
$ pip install --upgrade setuptools
# 해당 가상 환경에 장고 설치
$ pip install django
$ pip install django=원하는버전
- 폴더 하나 생성: DjangoProject
- 그 안에, django-admin startproject proj (프로젝트 명이 proj) -> 이렇게 되면 project와 필요한 파일들이 생성된다.
- python manage.py startapp [app name] (기능을 하나하나 만든다.)
- root directory(manage.py 있는 곳)으로 이동하여 .gitignore 파일 설정:
- 이후, root directory(manage.py 있는 곳)으로 다시 이동하여 .gitignore를 열어, DB 설정과 JSON Web Token을 인코딩하고 디코딩할 때 사용하는 SECRET KEY를 관리할 목적의 my_settings.py를 추가해준다. my_settings.py는 결코 깃에 올려서는 안된다! ( https://www.toptal.com/developers/gitignore/api/django,python,macos)
- 다사 root directory로 돌아와 이제 my_setting.py를 만들 차례이다.
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
SECRET_KEY = '시크릿키' # setting.py 내 SECRET_KEY 사용
- 자 이제 my_settings 준비는 모두 끝났다. 그럼 이제 root directory의 settings.py로 이동하여 순서대로 진행한다. my_settings.py의 내용은 절대 비밀이기 때문에 그대로 작성하는 순간 해킹의 위험이 매우 증가! 위와 같이 사용한다는 것만 기재.
1) import my_settings
2) DATABASES: 부분에 이미 my_settings에 적어둔 정보를 쓰겠다는 의미로 my_settings.DATABASES로 변경.
3) SECRET_KEY: 역시 그대로 데려다 쓰겠다는 의미로 my_settings.SECRET['secret']으로 변경.
https://hae-ong.tistory.com/25
https://simbasimba.tistory.com/9
- 앗 근데 mysql로 디비를 사용하고 있다면 여기서 에러가 날 것. pip install mysqlclient할 것.
- 앗 그래도 안된다면 mysql 서버가 안켜진 것: mysql.server start 이후 다시 서버 가동
- SignIn 메소드는 프론트로부터 body에 무언가 내용을 더해서 요청을 받으려면 post여야 한다. (get X)
통신이 발생할 때, Cross Domain 이슈를 막기 위해 corsheaders를 설정 해주어야 한다.
https://oen-blog.tistory.com/46
- 다시 root directory로 돌아와, pip install django-cors-headers로 콜스 헤더 설정 (설치 후에는 pip freeze로 잘 설치되었는지 확인할 것)
- 설치 후 다시 root directory의 settings.py로 이동
- INSTALLED_APPS 의 맨 마지막에 'corsheaders' 추가
- 그 아래 MIDDLEWARE에는 가장 상단에 'corsheaders.middleware.CorsMiddleware'추가
- 특히 Django의 CommonMiddleware나 Whitenoise의 WhiteNoiseMiddleware와 같은 응답을 생성할 수 있는 미들웨어 전이어야 한다. 이러한 미들웨어 전이 아닌 경우엔, 이러한 응답들에 CORS 헤더를 추가할 수 없기 때문이다.
INSTALLED_APPS = [
...
'corsheaders'
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', # <- 가능한 높게 위치시켜야 한다.
'django.middleware.common.CommonMiddleware',
...
]
...
...
#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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
- 이렇게하면 cors 설치가 끝났다고 볼 수 있음.
- 터미널에서 나의 아이피를 확인하는 방법 ipconfig getifaddr en0
- 나의 아이피를 확인한 후에 다시 root directory의 settings.py로 이동하여 28행쯤의 ALLOWED_HOSTS= 를 찾아, ["*", "내 아이피 주소", "내 아이피 주소:8000"]으로 변경. 내 아이피 주소로 들어오는 모든 접근 다 허용하겠다는 소리임. 8000은 우리가 일반적으로 쓰는 django 포트명.
- 다시 root directory로 복귀하여 python manage.py runserver 0:8000 돌리기
그 후 Git & GitHub 초기화 및 설정을 진행한다.
https://yeongwoo-cho.tistory.com/287
Reference
https://velog.io/@ifyouseeksoomi/Django-프론트-백-연결하는-날
https://myjamong.tistory.com/101
https://hae-ong.tistory.com/25
https://velog.io/@cmin95/Django-C.R.U.D-1-1
https://oen-blog.tistory.com/46
'Server > Django issue' 카테고리의 다른 글
[Django] mysqlclient 설치 에러 해결 (0) | 2022.08.04 |
---|---|
[Django] Git 초기화 & Github 연결 (0) | 2022.08.03 |
[Django] migration 파일은 커밋 되어야 하는가? (0) | 2022.08.02 |
2. 쿠키와 세션 (cookie and session) (0) | 2020.09.23 |
1. 나 이제 윈도우에서 우분투로 개발할래(WSL과 VScode) (0) | 2020.09.14 |