개인 프로젝트/Django로 Airbn* 클론 코딩하기

[Airbn* Clone Coding #2] DJANGO 소개

Jinomad 2020. 9. 25. 22:21

Contents

  1. Linter 와 Formatter 

  2. Django Start!!

  3. Django의 주요 파일들


 

Linter 와 Formatter

 

1. Linter 

 

 Python은 Compile 언어가 아닙니다. 때문에 Compile을 통하여 에러를 감지할 수가 없습니다. 일단 실행시키고 에러가 발생하면 그때서야 발견이 가능합니다. Linter는 에러가 생길 부분을 미리 감지해서 알려주기 때문에 불편한 상황을 피할 수 있습니다. 간단하게 말해서 코드에 틀린 부분이 있다면 Linter가 "거기 틀렸어."라고 알려주는 것과 같습니다. 

 

대표적인 것

  • PEP 8 : 파이썬을 위한 스타일 가이드입니다. 
  • flake8 : 대표적인 Linter.  "pipenv install flake8 --dev"으로 수동 설치가 가능합니다.

 

2. Formatter 

 

  내 코드를 Format 해주는 기능. 코드를 짜고 저장하기를 누르면 Formatter가 코드를 더 보기좋게 만들어줍니다. 

 

대표적인 Formatter 

  • black : 대표적인 Formatter. "pipenv install black"으로 인스톨할 수 있습니다. 만약 Formatter이 동작하지 않는다면, settings.json 파일에  "editor.formatOnSave": true 를 추가해주면 됩니다. 
  • "pipenv install black --dev --pre"으로 수동 설치가 가능합니다. 

 

Django Start!! 

 시작하기 전에 Python이 깔려있지 않다면 vscode에서 Python(with pipenv version)으로 설치해주면 됩니다. 

 

명령어

1. django-admin startproject [프로젝트 이름]

  • 프로젝트 파일들을 생성합니다.
  • 예제에서는 'config'라는 이름을 사용했으며, 생성된 폴더의 안에 있는 파일들을 상위폴터로 옮기고 기존의 빈폴더는 삭제했습니다. 

2. python manage.py runserver 

  • 서버를 작동시키는 명령어 
  • 중간에 코드가 수정되면 자동으로 재시작합니다.

3. python manage.py createsuperuser

  • Super User를 생성합니다. 
  • username, password, email 을 입력해주면 생성할 수 있습니다. 이 때, 패스워드는 아무렇게나 해도 상관 없으나 너무 쉬운 패스워드를 입력하면 경고 메시지가 뜰 수 있습니다. 

3. python manage.py createsuperuser

  • Super User를 생성합니다. 
  • username, password, email 을 입력해주면 생성할 수 있습니다. 이 때, 패스워드는 아무렇게나 해도 상관 없으나 너무 쉬운 패스워드를 입력하면 경고 메시지가 뜰 수 있습니다. 

4. python manage.py makemigrations 

  • Django가 우리의 models 파일을 참고하여 migration 파일을 생성합니다.
  • Django는 migrate 파일을 통해 모델의 변명사항을 저장하는데 makemigrations 명령어를 통해 모델에 변경사항이 존재한다는 사실을 Django에게 알려줄 수 있습니다.
  • migration 파일은 디스크 상에 존재합니다. <app-name>/migrations/0001_initial.py 파일을 통해 읽어볼 수 있으며, 수동으로 변경할 수도 있습니다. 

5. python manage.py migrate 

  • 적용되지 않은 생성/변경된 migrations 파일들을 데이터베이스에 적용합니다. 
  • migrate와 makemigrations 명령어가 굳이 분리된 이유는 버전 관리 시스템에 migration 파일을 커밋하고 앱과 함께 출시할 수 있도록 하기 위해서라네요. 
  • 모델의 생성/변경을 적용하는 단계. ① models.py의 추가 및 변경, ② python manage.py makemigrations를 실행, ③ python manage.py migrate를 실행.

6. django-admin startapp [Application 이름(단, 복수형이여야 한다)]

  • Application을 생성합니다. 이 때 Application의 이름은 복수형이여야 합니다. 
  • 예를 들면 다음과 같습니다.
    1. django-admin startapp rooms
    2. django-admin startapp users
    3. django-admin startapp reviews 
    4. django-admin startapp conversations  
    5. django-admin startapp lists 
    6. django-admin startapp reservations 

 

Django를 사용시 주의할 점!!

① Application 안의 파일의 이름은 절대로 수정해서는 안된다.

  Django는 프레임워크이지 라이브러리가 아닙니다. Django는 특정한 이름의 파일을 주시하고 있는데, 파일의 이름을 변경한다면 그것을 인식하지 못할 것입니다. 이것은 파일의 이름에만 국한되는 것은 아닙니다. 때로는 어떤 변수나 function에도 동일한 법칙이 적용됩니다. Django가 생성하는 파일은 웬만해서는 건들지 않는 것을 추천합니다. 하지만 우리가 생성하는 파일은 자유롭게 수정할 수 있습니다. 

 

Django의 주요 파일들 

settings.py

  전역 설정 목록과 기본값이 정의된 파일

  • INSTALLED_APPS
    프로젝트에서 사용할 앱들의 경로가 위치하는 영역
    유저가 생성한 앱의 경로도 이 항목에 포함

  • TEMPLATES
    공통적으로 들어가는 html코드를 관리하기 위한 확장형 template들의 경로를 설정하는 영역

  • DATABASES
    database를 사용하기 위한 설정이 위치하는 영역
    default로 sqllite를 사용

  • TIME_ZONE
    django의 DateTime객체에서 사용할 기준시를 설정하는 영역'Asia/Seoul'로 설정시 서울을 기준시로 설정 

  • STATIC_URL

    CSS, Image등 의 정적 파일 경로를 설정하는 영역

urls.py

urlpatterns 리스트의 항목에 따라 request를 라우팅합니다.

예를 들어 "path("users/", include("users.urls"namespace="users")"가 urlpatterns에 속해있다면 users라는 앱의 urls.py로 라우팅해줍니다. 

 

admin.py

관리자 패널에서 GUI를 통해 관리할 모델을 선언하는 페이지

list_display를 통해 모델의 요소를 GUI에 표시할 수 있고, list_filter를 통해 필터 기능을 사용할 수 있습니다.

 

models.py

원하는 데이터베이스가 어떻게 생겼는지 설명해주는 파일

models.py의 Class는 DataBase의 테이블과 대응

models.py의 변수(멤버 객체)들은 테이블의 column에 대응  

 

views.py

request가 최종적으로 라우팅되어 동작시킬 로직이 정의된 파일

urls.py에 의해서 라우팅된 요청을 views.py가 처리해줍니다. 

 

db.sqlite3

  개발하는 중에 사용하게될 데이터베이스