1.가상환경 생성
conda create -n westagram2 python=3.8
2.가상환경 활성화
conda env list #가상환경 목록 출력
conda activate westagram2 #가상환경 활성화
1.Database 생성
mysql> create database westagram2 character set utf8mb4 collate utf8mb4_general_ci;
pip install django
pip install pymysql
pip install django-cors-headers
2.Django Project 생성
django-admin startproject westagram2
3.초기 개발환결 설정
ALLOWED_HOSTS = ['*']
주석처리
westagram/urls.py 수정
from django.urls import path
urlpatterns = [
]
my_settings.py생성
장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASES등은 소스로 공유하는 것이 아닌 별도의 파일 혹은 환경 변수로서 관리하는게 좋기 때문에 이번 프로젝트에서는 my_settings라는 별도의 파이썬 파일을 생성하서 참조하는 방법으로 진행하기로 했습니다.
settings.py <-> my_settings.py연동
from pathlib import Path
from my_settings import SECRET_KEY,DATABASES
...
SECRET_KEY = SECRET_KEY
DATABASES = DATABASES
import pymysql
pymysql.install_as_MySQLdb()
INSTALLED_APPS = [
'corsheaders',
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
마지막으로 허용할 값을 정의합니다.
requirements.txt생성
협업을 함에 있어서 동일한 개발환경을 구축하는 일은 매우 중요합니다. 이를 위해 환경(사용자의 컴퓨터)마다 사용하는 패키지를 동일하게 해야합니다.
manage.py가 있는 위치에서 pip freeze 커맨드를 작성합니다.
requirements.txt를 생성한 다음 필수 패키지를 복사 붙여넣기하고 저장해주세요.
python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh
Create하여 나용 내용을 .gitignore파일 생성 후, 붙여넣기 해주세요.
그리고 보안 관련 파일은 github에 업로드되면 안되기 때문에 .gitignore파일 가장 하단에 my_settings.py를 추가해주세요.
서버를 실행하니 You have 3 unapplied migration(s).오류가 발생하여
python manage.py migrate
를 작성한 후 다시 서버를 실행하니 정상적으로 작동하는 것을 확인할 수 있었습니다.
manage.py가 위치한 곳에서 앱을 생성해야합니다.
password의 경우 처음에는 max_length = 20으로 작성했다가 password가 이후에 암호화가 되기 때문에 더 길어야한다는 피드백을 받고 max_length=200으로 수정하였습니다.
또한 생성일자와 수정일자를 확인하기 위해 created_at과 updated_at를 작성하다가 auto_now_add와 auto_now의 차이점에 대해 알아봤습니다.
django 공식문서를 살펴보면 다음과 같이 나와있습니다.
auto_now의 경우 object가 save될 때마다 현재날짜로 갱신이 된다면
auto_now_add의 경우 object가 처음으로 만들어질때만 설정됩니다.