🔥 Pipenv 환경설정
🔥 Django 설치
🔥 Git과 연동하기
🔥 Project & App 생성
1) Pipenv
- 가상환경 내에 설치된 패키지(Python, Django 등..)는 활성화된 가성환경 내에서만 기능하기 때문에 버전 차이로 인한 충돌을 예방할 수 있어요! 이런 이유로 Project 진행 시, 가상환경 내에서 작업한답니다.
- 이에 pipenv를 통해 Django를 설치하고 프로젝트를 생성하는 방법을 알아볼께요.
- pipenv는 전역으로 설치하여 사용하기 때문에 최상위 디렉토리에서 아래 명령으로 설치할 수 있어요.
- pipenv 전역 설치 : 🔎
brew install pipenv
- pipenv 업그레이드 : 🔎
brew upgrade pipenv
- pipenv 설치되었는지 확인 : 🔎
pipenv
- pipenv를 전역으로 설치 한 뒤, 프로젝트를 생성할 디렉토리로 이동하여 아래와 같이 가성환경 내에 python3를 설치해줍니다.
- pipenv로 python3 설정 : 🔎
pipenv --three
- 여기까지가 가상환경을 활성화할 준비를 완료한 생태에요. 해당 디렉토리 내부를 살펴보면, Pipfile이 생성된 것을 볼 수 있어요.
- 이제 가상환경을 활성화해보도록 할께요:)
- pipenv 활성화 : 🔎
pipenv shell
1) Django 설치
- 가상환경 내에 패키지나 라이브러리를 설치하고자 한다면, pipenv를 활성화시킨 뒤 "pipenv" 명령어를 통해 설치해줘야 해요! Django 뿐 아니라 모든 패키지는 pipenv로 설치해야합니다!
- Django 최신 버전 설치 : 🔎
pipenv install Django
- Django 특정 버전 설치 : 🔎
pipenv install Django==2.2.5
- Django 설치 확인 : 🔎
django-admin
- Django를 설치한 뒤, Pipfile을 살쳐보면 [package] 부분에 Django가 추가된 것을 볼 수 있음
[[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" # [packages] django = "==2.2.5" 👈 설치 후 패키지 부분에 설치한 Django가 보여요:) # [dev-packages] # [requires] python_version = "3.9"
1) repository 생성
- "https://github.com/"에서 Create a New Repository로 저장소 먼저 생성해 줍니다.
- 이후 console 명령을 통해 git과 연결 시켜볼께요!
- git 저장소 초기화 : 🔎
git init
- git 저장소 연결 : 🔎
git remote add origin [저장소 url]
- git 첫번째 커밋 : 🔎
git add .
→git commit -m "내용"
2) 콘솔에서 git이 한글로 표시될 때, 해결 방법
- git의 명령을 입력하니, 한글로 나와서 처음 당황했어요. 예전엔 이런적이 분명 없었는데요.. google을 뒤져보니, git 내부에 어떤 기능으로 인해 사용자의 국가를 인식해서 자동으로 해당 국가언어로 번역되어 출력되는 것 같아요.
- 에러메시지 등이 한글로 나오면 고맙지만,, 문제가 생겼을 때 대처하기 어려울 것 같아 영어로 변경할 수 있는 방법을 찾아봤습니다....
- zshrc 진입 : 🔎
code ~/.zshrc
- zshrc 설정 추가 :
alias git='LANG=en_GB git'
- 터미널에서 명령 : 🔎
source ~/.zshrc
- 여러 방법이 있는 듯한데 저는 이 방법으로 해결했어요..!
3) README & Gitignore
- git과 연동되었으니, "README" 파일과 ".gitignore"을 생성해 볼께요.
- "README"는 파일을 생성 뒤, 원하는 내용을 간략히 입력해주시면 됩니다.
- README 파일 생성 : 🔎
touch README.md
- ".gitignore"은 보안과 관련되어 노출되면 안되는 내용 또는 git에 올릴 필요가 없는 파일을 지정하는 파일입니다. 이에 ".gitignore"에 명시된 파일은 git이 무시하죠!
- gitignore 파일 생성 : 🔎
touch .gitignore
- .gitignore에 어떤 파일을 추가해야할지 모를 땐, "gitignore python"을 google에 검색하여 샘플을 gitignore에 복사 붙여주세요.
- 여기에
.DS_Store
을 ".gitignore"에 추가했습니다.
1) Django Project 생성
- 아래는 Django 프로젝트를 생성하는 console 명령입니다. pipenv 활성화한 뒤, 생성해야해요:)
- 프로젝트 생성 방법 : 🔎
django-admin startproject [프로젝트명]
- 위 방법은 tutorial에 나오는 대표적인 Django 프로젝트를 생성하는 방법이지만, 프로젝트를 관리하기 위해서 더 좋은 방법은 config로 프로젝트를 생성 후 confing 내에 생성된 confing 폴더와 manage.py를 밖으로 꺼내는 것이에요:)
- config 내에 폴더와 파일을 밖으로 꺼내기 위해서는 최상위 config 디렉토리명을 다른 이름으로 수정해야지 가능합니다.
- 🔎
django-admin startproject config
→ config 폴더 이름 변경 → config안에 config와 manage.py 밖으로 끌어내기 → 이름 변경한 빈 폴더 삭제- 위 방법이 복잡하다면,, 아래 명령으로 프로젝트 생성하면 됩니다. 맨 끝에 .을 붙여주는거예요:)
- 🔎
django-admin startproject config .
2) settgins.py에 SECRET_KEY 분리
- Django 프로젝트를 생성하면 settings.py이 함께 생성되는데, settgins.py의 "SECRET_KEY" 부분은 Django의 보안 기능과 밀접한 관련이 있어 노출되면 위험합니다.
- 이에 별도의 파일을 만들어 "SECRET_KEY"를 settings.py에서 분리하고 settings.py가 그 파일을 읽어 사용할 수도록 하는게 좋습니다.
- 또한 "SECRET_KEY"를 갖고있는 분리된 파일은 git에 올라가지 않도록 gitignore에 추가합니다!
- 우선 manage.py와 같은 선상에 있도록 json 형식의 파일 생성 후, SECRET_KEY의 내용을 옮겨줘요. json파일은 그냥 .json으로 끝나는 파일을 만들어주면 됩니다. "secrets.json"으로 만들었어요.
{ "SECRET_KEY": "settings.py의 SECRET_KEY 넣어줌" }
- git에서 secrets.json을 무시하도록 .gitignore에서 secrets.json 파일 추가해줄께요.
# Django SECRET_KEY secrets.json
- secrets.json 파일 안의 SECRET_KEY를 읽어들일 수 있도록 settings.py를 아래처럼 설정합니다.
import os, json from django.core.exceptions import ImproperlyConfigured ... ... secret_file = os.path.join(BASE_DIR, 'secrets.json') with open(secret_file) as f: secrets = json.loads(f.read()) def get_secret(setting, secrets=secrets): try: return secrets[setting] except KeyError: error_msg = "Set the {} environment variable".format(setting) raise ImproperlyConfigured(error_msg) SECRET_KEY = get_secret("SECRET_KEY")
3) Django App 생성
- Django의 Project는 각 기능을 맡은 여러 app들이 모여 구성되는데요,, app을 생성할 때에는 일반적으로 앱이름에 s를 붙인다고 합니다! App의 이름일 뿐이니 안붙여도 기능에 문제는 없답니다.
- 앱 생성 방법 : 🔎
django-admin startapp [app명+s]
- Django에서는 우리가 생성한 app을 자동으로 인식하지 못하기 때문에 settings.py에서 INSTALLED_APPS에 app을 등록시켜야 해요. 이미 Django가 기본적으로 제공하는 App들이 등록되어 있기 때문에 직접 생성한 앱만 등록시키면 됩니다.
INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", ]
- 앱 관리의 복잡성을 줄이기 위해 앱의 특성(DJANGO_APPS, PROJECT_APPS, THIRD_PARTY_APPS)에 따라 분리하여 등록하면 더 편리해요!
DJANGO_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", ] PROJECT_APPS = [ "users.apps.UsersConfig", "rooms.apps.RoomsConfig", "reviews.apps.ReviewsConfig", "reservations.apps.ReservationsConfig", "lists.apps.ListsConfig", "core.apps.CoreConfig", "conversations.apps.ConversationsConfig", ] THIRD_PARTY_APPS = [] INSTALLED_APPS = DJANGO_APPS + PROJECT_APPS + THIRD_PARTY_APPS