카테고리 없음

[Django] 개발환경 세팅 - 인프런 Django로 Pinterest 따라만들기 (1)

성창민1214 2024. 9. 3. 21:15
작성자 성창민
일 시 2024. 9. 3  (화) 18:00 ~ 21:00
장 소 미래관 자율주행스튜디오 429호
참가자 명단 임혜진, 성창민, 이재영, 장원준, 김명원
 사 진

 

 올해 들어 Django를 사용하여 두개의 프로젝트를 진행했습니다. 보통 프로젝트를 진행하면 많은 경험이 쌓여 자신감이 생기기 마련일 것 같은데, 오히려 저는 개발하면 할 수록 불안함을 많이 느꼈습니다.

 아마 그 이유는 "내가 하는 개발이 옳은 방법인지 모르겠다" 인 것 같습니다. 지금까지 프로젝트를 진행하면서 이게 맞는 방법인가? 라는 의문이 수도없이 들었습니다. app을 이렇게 내 맘대로 단위를 나누어도 될까? 조금 더 효율적인 방법이 있지 않을까?라는 고민을 하여 찾아보아도 명쾌한 해답을 내기 힘들었습니다. 그렇지만 당장 개발은 진행해야 했고, 지피티에게 물어도 보고, 구글링도 하며 얼기설기 백엔드 개발을 진행해 나갔습니다. 그 과정에서 많은 것을 배웠습니다. 그렇게 배운 것들, 그 퍼즐 조각들 자체가 의미 없다고는 생각하지 않습니다. 그러나 이 퍼즐 조각들을 어디에, 언제 끼워야 할 지 잘 모른 채로 나아가기 보단, 지금 잠시 멈춰서 퍼즐 판 전체를 한번 보고 가는 것이 좋겠다는 생각이 들었습니다.

 그렇기에 이번 모각코에서는 인프런의 "작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지" 라는 강좌를 보며 Django 개발의 전반적인 가이드라인을 명확하게 그리고자 합니다. 그리고 이 강의를 통해서 아직 부족한 배포 부분에 대한 이해를 높일 수 있을 것 같아서 기대가 됩니다. 

 프로젝트를 진행하는 과정에서 익숙해진 부분도 많이 있기에, 불필요한 부분은 구체적으로 기록하지 않고, 새로 배운 내용이나 메모하고 싶은 내용 위주로 기록하도록 하겠습니다.

 

 

 

프로젝트 생성

개발환경은 당연하게도 django를 설치하여 아래 사진과 같이 만들었습니다. 우선 django 프로젝트 생성을 했습니다.

django-admin startproject 프로젝트명

프로젝트 설치를 하고 나면 기본적으로 구성되는 디렉토리 구조입니다.

 

 

 

앱 생성

앱은 Account, Article, Project, Comment, 등등 이런 식으로 나누시는 것 같은데, 저번 저희 프로젝트도 비슷하게 진행했던 것 같아서 조금 안심이 됩니다. 그러나 저는 앱을 나누면 오히려 개발이 불편하다고 느꼈는데, 이 강의를 따라가다 보면 불편함을 좀 해소할 수 있지 않을까? 라는 기대를 하는 중입니다.

 

 

 

Account App 생성

우선 accountapp을 만들어 settings.py에 app을 등록하고,

python manage.py startapp 앱이름

 

프로젝트 urls.py에 include를 이용하여 accountapp/urls.py와도 연결해주었습니다.

 

그리고 urls.py 내부에 appname을 지정해주면 나중에 url을 길게 적는 대신 간단하게 적어서 사용할 수 있는 함수도 있다는 것을 배웠습니다. 매번 길게 쓰는거 번거로웠는데 좋은 기능인 것 같습니다. 지금 당장은 쓰는걸 가르쳐주진 않으셨는데 어떻게 사용할지 기대됩니다.

127.0. ~ 와 같은 긴 url을 accoutapp:hello_world 처럼 직관적이고 간단하게 표현 가능!

 

 

 

Django-environ's

settings.py를 열어보면 SECRET_KEY 가 있는데요, 이는 깃헙에 올리면 안되는 내용이므로 미리 관리해야 합니다.

그래서 이전에는 이러한 내용들을 모아서 secret.json이라는 파일을 만들었고, 이를 .gitignore에 포함시켜 깃헙에 공유하지 않았습니다. 팀원들간에는 따로 보내어 협업했고요. django-environ's 라는 것도 이와 비슷한 것 같았습니다. 한번 만들어 보겠습니다.

python -m pip install django-environ

 

먼저 설치를 해주고,

 

import environ
import os

env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)

# Set the project base directory
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# Take environment variables from .env file
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

 

settings.py 에 해당 내용을 붙여 넣습니다.

 

그리고, .env 파일을 프로젝트 폴더 내부에 만들어 줍니다.

DEBUG=on
SECRET_KEY=your-secret-key
DATABASE_URL=psql://user:un-githubbedpassword@127.0.0.1:8458/database
SQLITE_URL=sqlite:///my-local-sqlite.db
CACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213
REDIS_URL=rediscache://127.0.0.1:6379/1?client_class=django_redis.client.DefaultClient&password=ungithubbed-secret

 

.env 파일은 위와 같은 내용을 붙여 넣습니다. 그리고 SECRET_KEY 부분에 자신의 키를 넣으면 됩니다.

 

사실 secret 파일을 만들어서 했던 저희 방식과 크게 다르지 않았지만, 절차가 정해져 있는 방식대로 만들 수 있다는 점이 좋았고, 추후에 뭔가 더 관리할 수 있어보이는 내용들이 있었습니다. 계속 따라가다 보면 알 수 있겠죠? 만약 알려주지 않는다면 따로 학습을 진행해야 할 것 같습니다.

 

 

 

Git

django-environ's를 사용하여 .env를 작성하고, 키를 숨겨보았습니다. 그리고, .gitignore에 해당 파일도 추가했습니다.

.env 및 git에 업로드 할 필요 없는 파일 정리.

그리고 git에 추가를 완료했습니다.

git Desktop이 편리해서 잘 사용하고 있었는데, git을 자유자재로 사용하기 위해서는 아무래도 Bash에 적응하는게 더 좋을 것 같아 보입니다.

이번 강의 연습 첫 커밋

git add .
git commit -m "커밋 메세지"

 

어느정도 기본 세팅이 완료되었습니다. 다음 강의부터는 Template에 대해서 배우는 것 같은데, 아무래도 이 강의가 하나의 완성품을 만드는 것이기 때문에, 프론트 관련 부분도 들어있는 것 같습니다. 백엔드를 배우며 거기에 프론트를 어느정도 맛볼 수 있을 것 같다는 생각도 들어 기대가 됩니다.

 

 

지금까지 백엔드에 대해 차근차근 학습하기 보단 부딪혀가면서 배운 것들이 많았습니다.
그 사이사이에 생긴 공백들이 조금 불안했지만 이번 모각코를 통해 틈을 채워넣을 수 있을 것 같아서 기쁩니다. 꼼꼼히 강의를 따라가며 조금 더 단단한 백엔드 지식을 갖추도록 노력해보고자 합니다.