코딩일기

[노마드코더] Django airbnb clone project(feat. 클론 코딩) 본문

Code/기타

[노마드코더] Django airbnb clone project(feat. 클론 코딩)

daje 2021. 1. 18. 23:37
728x90
반응형

 

안녕하세요 다제입니다. 

 

저는 요즘 airbnb 클론 코딩을 집중하여 진행중에 있습니다. 

 

이에, 제가 만난 "오류를 소개"하고자 이렇게 포스팅을 하게 되었습니다. 

또한, 저는 프로젝트 세팅 환경을 구성하는게 너무 어렵고 힘들었습니다. 

이 프로젝트를 진행하는 동안 반 이상의 에너지는 환경을 세팅하는데 쏟을 만큼 코딩보다

프로젝트 환경을 세팅하는데 힘들었습니다.

 

그래서 세팅을 설정하는 부분에서만 자세히 다루고 나머지 부분에는 큰 흐름과 오류를 주로 다룰 예정입니다!

또한, 이전에 포스팅하였던 방식과 사뭇다르게 포스팅되오니 구독자 분들께서는 참고 부탁드립니다. 

 

이 글은 사전에 포스팅된 글과 다르게 보고형으로 작성되지 않았습니다. 

소설처럼 쭉~ 흐름을 따라가는 글입니다. 

소설처럼 글을 작성하는 이유는

  -. 저는 Django 처음배우기에 일기식으로 그날그날 배운 것을 포스팅하는 형식입니다. 
  -. 또한, 전반적인 수업 내용을 다루는게 아닙니다. 
    * 제가 만나 오류 / 그 오류를 해결했던 방법(구글링, slack)을 포스팅하는 장소입니다. 
    * 수업은 니꼬(노마드코더)가 정말 친절하고 차분하고 루즈(loose)하지 않게 알려줍니다. 

  

저는 친구에게 웹 사이트를 만들어주겠다는 약속을 하였습니다. 

 

왜냐하면 니꼬(노마드코더)가 배운 내용을 활용하여 무료로 재능을 나누어주는 것은 

저의 실력을 키우는데 매우 도움이 된다고 하였습니다.. ""일종에 사서 고생을 해라! ""

처음에는 flask로 작업을 진행하였고, 웹스크래핑을 원하는 자료를 불러오는데 까지는 성공하였다. 

 

그런데.. 단순히 웹사이트만 만들어서는 아무것도 할 수 없었습니다.

서버, 로그인시스템, 비밀번호변경 등 다양한 기능을 구현하기에는 flask로 너무 복잡하였습니다..

 

flask는 이러한 큰 프로젝트에는 맞지 않는다는 것을 알게 되었고,

라이브러리가 가볍다라는 무엇인지 이제 알게 되었습니다. 

 

Django는 프레임워크로 큰 박스에서 필요없는 기능은 안쓰고

필요한 기능 확장해 나가는 느낌이라고 이해하면 됩니다. 

 

그래서 큰 마음을 먹고 장고 강의를 수강하게 되었습니다.. 할인 쿠폰이 있어서 조금 할인받을 수 있었습니다.

( 노마드코더 challenges를 도전하여 성공하면 할인 쿠폰을 받을 수 있다.. challenges는 쉽지... 않다... )

 


 

1.  Pipenv이 머지????

파이썬에는 npm이라는 개념이 없고, package.json이라는 개념이 없습니다. 

 

파이썬은 pip로 설치를 진행하시는 것은 모두 아실텐데요.

pip를 사용하게 되면 전역(globally)으로 설치한다는 단점이 있습니다. 

 

이 말은 파이썬을 버전별로 사용할 수 없다는 말과 같습니다.!

 

버전 별로 사용할 수 없는 게 왜 문제가 되냐면

현재 파이썬을 global로 설치를 진행하면3.9버전이 설치가 진행됩니다.

3.9에서는 딥러닝의 일부 기능들이 아직 모두 잘 작동하지 않습니다.

 

이처럼 개발 환경과 프로젝트에 따라 다른 버전으로 관리되는게 필수적입니다.

우리는 이러한 문제를 해결하기 위해 pipenv(피팸)이라는 가상환경을 구축하여 사용할 것입니다. 

 

pipnev = npm+package.json

 

저는 이렇게 개발환경을 새롭게 구축하는게 

아직은 너무 어렵고 복잡합니다... 제발 설명되로 되면 좋은데..

설명처럼 잘 풀어진 적은 html + css배울때 빼고 없었습니다...

 


 

1-1. mac & window pipenv 설치하기

  -. MAC

    * terminal을 켜주세요

    * cd Documents 를 입력하여 Documents 폴더로 이동해주세요

    * mkdir 폴더명 을 입력하여 새로운 폴더를 생성해주세요 ( ex. mkdir airbnb_clone )

    * sudo brew install pipenv 를 입력해 주세요 ( Mac은 왠만하면 이방법을 추천드립니다. )

    * sudo가 없으면 설치가 안되니 꼭 sudo 입력하여 설치해주세요 

 

    * 그러나, 이 또한 되지 않을 때가 있습니다. 

    * 저의 terminal은 brew가 not command 불라부라하면서 설치를 안합니다...

    * 결국,, pip install pipenv 을 입력 후 설치를 진행합니다. 

    * pipenv --three 입력 후 설치를 진행합니다. 

    * code . 을 입력하여 vscode로 넘어가 줍니다. ( 이게 실행이 안되는 분들은 접어진 글을 참조 바랍니다. )

    * 혹시 만약에 pip install pipenv로 진행을 하신 분들은 홈에 pipfile이 있으실 겁니다. 

    * 해당 파일을 우리가 생성한 폴더로 이동시켜주세요. 그리고 홈에 있는 pipfile은 모두 삭제를 부탁드립니다. 

더보기

[mac terminal에서 VSCode 열기]

방법1 : Go to VSCode -> Command -> Install CODE

방법2 : command + shift + P 입력 -> Shell Command : Install code in PATH 클릭 

 

  -. Window 

    * pip install --user pipenv로 설치를 진행하면 된다. 

    * 위와 같이 입력 후 pipenv을 입력했는데 머가 안나온다.. 

    * pip uninstall virtualenv
    * pip uninstall pipenv
    * pip install pipenv

    * 위 순서대로 진행하시면 됩니다. 

    * 이렇게 했는데도 안되시면 니꼬에게 댓글 또는 slack을 통해 문의 부탁드립니다. 

 

 

1-2. 가상환경으로 들어가기 & 세팅하기 

  -. pipenv shell을 Terminal에 입력하여 버블 안으로 들어가줍시다  

  -. 지금 우리가 하고 있는 것은 가상환경을 만들고

  -. 그 안에 pipenv shell 들어가고

  -. 장고를 설치해줄 것입니다. . 

  -. django-admin starproject config .를 입력한다. 

    * django-admin starproject mysite를 입력하라고 장고 튜토리얼에 나와 있지만,, 그건 초보자를 위한 것입니다.

    * mysite라고 입력을 하게되면 나중에 확장성에 문제가 발생될 수 있습니다.

    * 그래서 mysite를 사용하지 않는다. 

    * django-admin startproject config . 여기에서 . 를 입력하지 않으면 

    * 복잡한 작업을 거쳐야하는데 강의 따라가다보시면 그냥 지우고 . 쓰고 폴더를 생성하는 

    * 여러분을 보실 수 있으실 겁니다....ㅎㅎㅎㅎ

 


 

2. Linter & Formatter 개념과 설치 방법 

2-1. Linter & black 의 필요성

파이썬은 컴파일 언어가 아닙니다. 

컴파일(compiled)???????????이것이 무엇일까요..???????

 

쉽게 말해서 컴파일 언어는 컴퍼일러가 있어서 프로그램을 시작하기 전 에러를 잡아주는 언어를 의미합니다.  

 

그런데 파이썬은 컴파일 언어가 아니라면...?(파이썬은 런타임언어 입니다..)

 

몇줄 읽다가 오류가 나서 멈추고..... 

몇줄 읽다가 오류가 나서 멈추고..........

몇줄 읽다가 오류가 나서 멈추고...............

 

화가나서 더 이상 코드를 작성하지 못하고 으악..! 난 실력이 없어...이렇게 될 수 있습니다.

 

착한 프로그래머들께서 좋은 프로그램을 만들어주셨습니다.

That is Linter & black !!! ( Linter : 에러 수정자 / black : 형식수정자 ) 

 

저희가 또 linter & black를 설치하는 이유는 

PEP라는 코드를 작성하는 규칙(형식)을 자동으로 감지하여 수정해주기 위함입니다.

 

형식을 유지하는게 왜 중요해? 라고 말씀하시면 이제 곤란합니다.

저희는 혼자 일하지 않습니다. 항상 다른 프로그래머들과 함께 일을 하는데 

형식이 일정하지 않다면 매우 혼란스럽겠지요? 특히 화가 많이 난 상태에서 

형식이 맞지 않는 코드를 보면 갈굼 각이겠지요????


2-2. Linter의 설치방법

  -. 우리는 PyLinter를 사용하지 않습니다. 

  -. 우리는 flake8이라는 Linter를 사용합니다. 

  -. 좋은 컴퓨터를 사용하시면 알아서 알림이 뜹니다.( 저는 안뜹니다..... ㅜㅜㅜ )

  -. 이런경우를 위해 내가 방법을 다 찾아왔습니다. 

  -. ⇧⌘P (command + shift + P)를 동시에 누르시면 명령 팔레트라는 창이 뜹니다.

  -.  Python : Select Linter 명령을 선택합니다.

  -. flake8을 클릭하면 됩니당. 안돼시는 분들은 참고부탁드려요~

  -. 그리고 가상환경이 아닌 터미널에서 pipenv install flake8 --dev 를 입력합니다. 

  -. 제대로 설치되었는 확인하는 방법은 pipfile에 가보면 [dev-packages]에

     flake8이 보인다면 정상적으로 설치 완료된 것입니다. 


[dev-package & packages 차이점]

  -. dev-package : dev는 개발자가 개발할 때만 필요한 패키지들

  -. packages : 웹 애플리케이션이 동작할 때 필요한 프로그램들 

 


2-3. black 설치방법

  -. 가상환경이 아닌 터미널에서 pipenv install black --dev --pre 를 입력합니다. 

 

[black 설치 완료 후 확인해야하는 3가지]

  -. 제대로 설치되었는 확인하는 방법은 pipfile에 가보면 [dev-packages]에

     blakc이 보인다면 정상적으로 설치 완료된 것입니다. 

  -. black의 경우, .vscode에 가서 "python.formatting.provider": "black" 있는지 확인해주자!

     * 원래는 자동으로 생겨야하는데, 나는 구식이라... 안생긴다.. 안생기는 사람은 좌절하지 말고 직접 입력해주시면 됩니다.

  -. 저장을 하였을 때 포맷이 변경되는지 반드시 체크하여야 한다. 

     * 안되는 분들은  왼쪽 하단 톱니바퀴를 클릭 후 settings.json에 들어간다. 

     * 검색창에 "format on save"를 입력 후 박스 체크가 되어 있는지 확인한다. 

     * 강의에도 친절히 나왔으나, 이때쯤이면 정신 헤롱헤롱😵😵😵😵😵😵😵😵


[Django 기초 둘러보기]

  -. __init__.py : 어떤 폴더를 생성했을 때, 해당 폴더를 사용하기 위해 반드시 있어야하는 파일 

  -. 함수나 변수 위에 마우스를 두고 command키를 누르면 그 함수와 변수가 정의된 곳으로 이동하게 됩니다.

  -. Django doc : 그 어느 언의 공식문서(DOC)보다 친절하고 자세하게 설명이 되어있습니다. ( 장고링크 )

  -. migration이 필요없는 부분은 저장하면 링크가 자동으로 업데이트 됩니다. 

  -. db.SQL : 우리의 개발용 데이터 베이스가 자동적으로 생성되고 별도의 SQL언어를 배우지 않아도 장고가 알아서 번역을 도와준다. 

  -. 우리는 아무것도 하지 않았는데 장고가 이 많은 것들을 다 꽁짜로 진행주어서 너무 신기했습니다. 

  -. 서버를 시작하는 방법 : "python manage.py runserver"

  -. 서버를 종료하는 방법 : "control + C"

  -. 관리자 아이디 생성방법 : "python manage.py createsuperuser"

  -. vscode terminal open 단축키 : command + `

 

[2021.01.25(월)]

  -. 장고에는 여러 가지 기능들이 있는 것을 확인하였고, 

  -. 장고를 만든 사람은 무척 친절하다는 생각이 들었다.

  -. 또한, 아무것도 안했는데 관리자 페이지가 자동을 생기는 건 정말..!! AWESOME!!!!!!!!

 

내일도 공부하여 조금씩 포스팅하도록 하겠습니다. 

봐주셔서 감사합니다.!

728x90
반응형
Comments