Project

[장고&파이썬] Django-Poll-App 투표 앱 코드 분석 - 1

Ariella 2021. 11. 10. 12:10
반응형

 

 

 

파이썬, 장고 개념을 많이 배워도 이론적으로 배운 개념들은 결국 시간이 지나며 잊혀지기 마련이다.

그러나, 프로젝트를 하면서 구현했던 코드와 문법들은 뇌리에 박혀 쉽게 잊혀지지 않고 다시 코드를 훑어보면 금방 구조가 떠오른다.

 

따라서, 해커톤을 이틀 앞두고 어떤 준비를 해야할까 고민하다가 개념 책을 덮고 실질적으로 어떻게 활용되고 있는지 코드분석을 해보기로 했다.

 

 


 

이번에 분석해볼 프로젝트는 깃허브의 7가지 훌륭한 프로젝트 예제 중 하나인

Poll-App (투표 앱) 프로젝트이다.

 

https://github.com/devmahmud/Django-Poll-App

 

GitHub - devmahmud/Django-Poll-App: Django poll app is a full featured polling app. You have to register in this app to show the

Django poll app is a full featured polling app. You have to register in this app to show the polls and to vote. If you already voted you can not vote again. Only the owner of a poll can add poll , ...

github.com

 


 

 

이 프로젝트의 대략적 기능과 선택이유에 대해 말해보자면 

 

  • 투표 소유자만이 투표 추가, 설문 수정, 업데이트, 삭제 등 기능을 할 수 있다. -> 특정 유저에게 특정 권한을 주는 메커니즘을 어떻게 구현했는지 알고 싶었다.
  • 투표가 종료되면 투표할 수 없다. -> 본인이 했던 경매 프로젝트에서 날짜 기한을 둔 기능이 있었는데 이와 코드구현에서 어떤 부분이 다르고 같은가를 알고 싶었다.
  • 종료된 설문조사는 사용자에게 설문조사의 최종 결과만 표시한다. 
  • 이름, 게시 날짜, 투표 수 별로 투표를 필터링한다. -> 이 프로젝트를 선택한 가장 큰 이유이다. 개인 블로그 프로젝트, 경매 프로젝트를 할 때도 필터링 기능에서 어려움을 겪었는데 활용도가 높은 기능인만큼 이번 기회에 확실히 메커니즘을 알아보고자 한다.

 

 


 

1. 프로젝트를 가져오자

코드가 담긴 대용량의 프로젝트를 가져오는 방법에는 크게 두 가지가 있는데

 

1. zip파일을 다운받는다.

가장 간단한 방법으로, 깃허브 링크에 접속해 [Code]-[Download ZIP] 버튼을 클릭한다.

 

2. 소스트리를 이용해 Pull받는다. 

위의 사진에서 보이는 링크를 복사하여 소스트리의 새 탭을 열고 클론버튼-링크 붙여넣기 를 한다.

이후에 [깃 플로우] - [develop branch 생성 및 초기화] - [develop브랜치에 체크아웃 후 pull 받기]

 

 


 

2. 프로젝트를 VScode로 실행해보자

1. 터미널 열기

[New Terminal] 을 통해 터미널을 열어주고 다음 코드들을 차례로 입력한다.

 

 

2. 가상환경 세팅

# 가상환경 생성 / *myvenv = 가상환경 이름
python -m venv myvenv

# 가상환경 실행 (윈도우, 맥)
source myvenv/Scripts/activate
source myvenv/bin/activate

# django 다운 / *pip=python install package
pip install django

 

 

3. 마이그레이션

python manage.py makemigrations
python manage.py migrate

 

 

4. 가상환경 실행 

이때, manage.py의 경로를 확인 후 manage.py와 동일한 위치에서 다음 코드를 입력해야 한다.

python manage.py runserver

* 만약, 상위 or 하위 폴더에 있을 경우 다음 명령을 사용하여 동일한 위치로 만들어준다.

#들어가기
cd

#나오기
cd ..

 

 

5. 홈페이지 작동 확인

가상환경 실행 후 나오는 링크를 따라가면 다음과 같이 정상작동하는 페이지를 만나볼 수 있다.

가입, 로그인 후 투표를 생성하려고 하면 권한이 없다고 나온다.

따라서, 슈퍼유저를 만들어주자.

일단 서버를 닫기 위해 터미널 창에 [ctrl + c]를 입력한다.

 

 

6. 슈퍼유저 생성

python manage.py createsuperuser

슈퍼유저 계정으로 로그인 한 뒤 투표 생성 버튼을 누르자

정상 작동한다.

한 가지 궁금증이라면, 유저끼리 사용하는 투표 웹인데 투표를 등록하기 위한 권한을 서버 관리자가 일일히 부여해야 하는가라는 생각이 들었다. 

 


 

오픈소스를 로컬 컴퓨터에 다운받아 작동해보는 과정까지 진행했다.

다음 포스팅에서는 어떤 메커니즘으로 기능이 구현되었는지 본격적으로 분석해보기로 한다.

 

 

 

 

반응형