[Westagram] Mission1 : 초기세팅, Mission2 : 모델링

이태연·2021년 11월 27일
0

[Mission1]Django 초기세팅

가상환경

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;

Project 초기세팅

  1. Project Python Package설치
pip install django 
pip install pymysql
pip install django-cors-headers

2.Django Project 생성

django-admin startproject westagram2

3.초기 개발환결 설정

  • IP허용
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
  • M1 mysql setting
    m1의 경우 pymysql package를 settings.py에 추가해야 합니다.
import pymysql

pymysql.install_as_MySQLdb()
  • corsheaders
    settings.py에 INSTALLED_APPS와 MIDDELEWARE 안에 추가해줘야합니다.
INSTALLED_APPS = [
    'corsheaders',
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
  • 마지막으로 허용할 값을 정의합니다.

  • requirements.txt생성
    협업을 함에 있어서 동일한 개발환경을 구축하는 일은 매우 중요합니다. 이를 위해 환경(사용자의 컴퓨터)마다 사용하는 패키지를 동일하게 해야합니다.

manage.py가 있는 위치에서 pip freeze 커맨드를 작성합니다.
requirements.txt를 생성한 다음 필수 패키지를 복사 붙여넣기하고 저장해주세요.

Create하여 나용 내용을 .gitignore파일 생성 후, 붙여넣기 해주세요.

그리고 보안 관련 파일은 github에 업로드되면 안되기 때문에 .gitignore파일 가장 하단에 my_settings.py를 추가해주세요.

프로젝트 서버 실행


서버를 실행하니 You have 3 unapplied migration(s).오류가 발생하여

python manage.py migrate

를 작성한 후 다시 서버를 실행하니 정상적으로 작동하는 것을 확인할 수 있었습니다.

[Mission2]모델링

1. User Branch 생성

2. User App 생성

manage.py가 위치한 곳에서 앱을 생성해야합니다.

3. User테이블 생성

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가 처음으로 만들어질때만 설정됩니다.

profile
주니어 백엔드 웹 개발자입니다.

0개의 댓글