Django
Django는 파이썬 웹 서빙 프레임워크 중 하나이다. 프레임워크란 어떤 트리거에 의해 서빙을 할 때 서빙의 주체가 프레임워크인 것이다. Django는 화면을 띄워주는 주체로 내 코드를 가져가서 사용한다. 라이브러리는 서빙을 할 때 내 코드가 주체가 되고, 내 코드가 라이브러리를 가지고 와서 사용한다.
Django의 구조
파란색 화살표가 request, 주황색 화살표가 response라고 하자. 유저와 다른 서비스들이 웹 서버로 요청을 날리면 웹서버는 그 요청을 URLs.py로 보내 유효한 url인지 확인을 한다. 확인후에는 Views로 요청을 보내어 어떤 일을 처리해야 하는지 그리고 DB에서 입출력이 있는지 확인하고, 입출력이 있으면 Models로 가서 입출력을 진행한다. 만약 렌더링이 필요하면 Template에 있는 코드를 가지고 와서 Views가 템플릿의 코드를 HTML로 변환해서 웹서버로 보내주고, 유저와 다른 서비스에게 서빙을 하게 된다.
Django에서는 MVC 패턴 (Models, Views, Compiler)과 유사하게 MVT 패턴 (Models, Views, Template)을 사용한다. 추가로 미들웨어를 현업에서는 많이 사용하는데, 만약 URLs.py에 유효한 url이 있다면 요청이 Views로 넘어가기 전에 미들웨어를 타고 넘어가게 된다. 그러면 로깅이나 인증이나 모든 트래픽을 관리할 수 있다.
PEP8 Coding Convention
PEP는 python enhancement proposal의 약자로 파이썬을 더 좋게 만들기 위한 제한을 한다. Coding convention은 여러 사람이 협업을 해도 모두가 읽기 편한 코드를 작성하기 위한 기본 관습이다. PEP8은 아래와 같다.
- 한 줄의 문자열은 79자 (Django는 119자 추천)
- DocString은 72자
- snake_case 사용 (소문자_소문자)
- 모듈 레벨 상수는 모두 대문자 (변하지 않는 상수는 대문자)
- ClassName은 Capitalized Word
- 한 줄로 된, if, try…except, for, while 구문은 사용하지 않음
PEP20 (Zen of Python)은 파이썬 정신이라고 하는 20 가지 정도 되는 구문이다. 이중에서 가장 중요한 것은 가독성이 좋게 만들어야 된다는 것이다.
Django 시작하기
Django는 manage.py라는 파일을 통해 모든것을 실행한다. 이 Django 프로젝트 안에 여러가지 app을 만들어서 사용하면 된다.
$ pip install django
$ django-admin startproject <project name> # 장고 프로젝트 생성
장고 프로젝트를 생성하면 아래와 같이 프로젝트 폴더가 생성된다.
$ pip install virtualenv
$ virtualenv <env name>
$ .\<env name>\Scripts\activate
$ pip install django
$ (myenv) PS D:\workspace\dj\shrinkers> python .\manage.py runserver # 프로젝트 실행해서 서버 켜기
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 02, 2022 - 14:53:22
Django version 4.1.1, using settings 'shrinkers.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
유저가 들어올 수 있는 공간인 shortner라는 이름의 app을 만들어보자.
python .\manage.py startapp shortner
아래 처럼 파일이 생성될 것이다.
이렇게 Django를 사용하기 위한 사전 준비는 끝났다.