다음은 우리의 웹 애플리케이션을을 구성하는 html파일이다. 다음의 예시에서 ol태그안에는 서로 연결되는 링크들이 존재한다. 이 예시에서 만약 ol태그 속 링크들이 1억개라고 가정해보자. 만약 누군가의 요청에 의해 ol태그를 ul태그로 바꿔야한다면? 또는 링크를 추가해야한다면? 우리는 1억개의 html파일을 수정해야할 것이다.
우리는 이 상황에서 하나의 파일을 수정하면 다른 모든 파일도 수정하게끔 되면 어떨까라는 상상을 하게된다.
만약 클라이언트가 요구되는 입력사항을 입력하면 자동적으로 웹 페이지 파일을 전송해주면 얼마나 좋을까? html파일을 미리 여러개 만들어놓고 요청이 들어올 때마다 그것을 전송해주는 방식으로는 이것을 할 수 없을 것이다.
프로그래밍 언어(python)는 이 수요를 받아들인다. 예로 파이썬으로 웹페이지를 만들어주는 프로그램을 만들어, 요청이 들어올 때마다 요청에 맞는 웹페이지를 제공한다. 또한 웹 애플리케이션을 만드는 작업에는 공통된 작업들이 많다. 이것을 편리하게 미리 해둔 소프트웨어를 웹 프레임워크라고 한다.
다양한 언어를 기반으로 한 많은 웹 프레임워크가 존재한다. 이것들 중 쉽고 빠르게 사용자 요청에 따라 웹페이지를 순간적으로 찍어내서 공급하는 파이썬 진영의 Django를 알아보도록 할 것이다.
두 대의 컴퓨터가 있다. 오른쪽은 서버컴퓨터이며 3개의 서버 소프트웨어가 작동중이다. 오른쪽 컴퓨터에 요청을 보내기 위해 오른쪽 컴퓨터주소(127.0.0.1)로 접속하게 된다. 여기서 문제는 해당 서버 컴퓨터 안에 서버가 3개가 있다는 것이다. 우리는 이 컴퓨터안의 특정 서버로 접속하기위해 포트번호를 뒤에 추가해서 접속하게 된다. 컴퓨터안의 여러 서버 소프트웨어가 존재할 수 있음을 가정하고, 여러 포트번호를 만들어 원하는 포트로 하여금 특정 서버와 통신할 수 있도록 하기위해 포트라는 개념이 도입된다.(python manage.py runserver에서 기본은 8000번 포트이다.)
Django는 기본적으로 터미널에서 파이썬 명령어로 하여금 pip install django로 설치한다. 설치를 완료하면 django-admin이라는 명령어를 사용할 수 있다. django-admin만 입력할 경우 사용가능한 서브 명령어가 나열된다.
우리는 이 중에서 startproject라는 서브명령어를 활용해 django를 시작할 수 있다. django-admin startproject testproject . (점은 현재 경로)라고 입력할 경우, testproject라는 폴더가 현재경로에 생성되며 그 안에는 우리의 프로젝트에 필요한 여러 설정파일들이 생성된다.
urls.py는 사용자가 접속하는 "path"에 따라서 요청을 어떻게 처리할 것인지 정의하는 파일이다. 즉 라우팅을 해주는 중요한 파일이다. 다른 파일과 더불어 현재 언급한 이 파일까지 프로젝트를 진행하며 어떠한 역할인지 알아보도록 하자.
또 하나의 중요한 서브명령어는 runserver이다. 서버를 여는 것으로 기본으로 8000번 포트로 정의된다. 우리는 이 명령어(python3 manage.py runserver)를 통해 서버를 켤 수 있으며 주어진 주소로 접속시 초기에는 다음과 같은 웹 페이지를 받게 된다. 서버를 끄고 싶다면 control+c로 끌 수 있다. 명령어 끝에 다른 포트번호를 넣게 된다면 8000번 포트(default)말고 다른 포트를 사용가능하다.