Django - Basic - 1에서

  1. request, response가 무엇인지
  2. 백엔드는 무엇으로 이루어져 있는지
  3. 백엔드는 어떻게 작동하고 무슨 데이터 타입을 다루는지
    알아보았습니다.

이제 Django를 직접 다뤄보면서 진행하되 기초적인 개념에 대한 설명을 첨언하면서 진행하도록 하겠습니다.

Python설치, 가상환경 설정, django 설치에 대한 내용은 생략하겠습니다.


1. startproject

home에서 프로젝트를 시작하겠습니다.
프로젝트의 이름은 'practice'라고 하겠습니다.

터미널을 실행하고 home에서 다음 명령어를 실행합니다.
$ django-admin startproject practice
이를 실행하면 home에 practice라는 폴더가 생성되고 이 폴더의 tree구조는 다음과 같습니다.

practice
├── manage.py
└── practice
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

각 파일에 대한 설명은 진행하면서 하나하나 알아보도록 하겠습니다.

먼저, manage.py는 Django application을 관리하기 위한 명령어들을 내장하고 있습니다.

2. startapp

그럼 application이 무엇인지 알아보기 위해 일단, application을 생성하도록 하겠습니다.

application의 이름은 firstapp이라고 하겠습니다.

manage.py가 있는 폴더의 위치에서 다음 명령어를 실행합니다.
$ python manage.py startapp firstapp

그리고 tree구조를 보겠습니다.

practice
├── firstapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── practice
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-37.pyc
    │   └── settings.cpython-37.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py

firstapp이라는 폴더가 생겼고 그안에 많은 파일들이 있습니다.
이로써 firstapp이라는 app을 생성한 것을 확인했습니다.

그리고 firstapp이라는 app이 있다는 것을 프로젝트에 알려야합니다.
프로젝트 폴더(practice)의 settings.py 파일을 열어보겠습니다.

이 파일안에는 INSTALLED_APPS라는 List가 있습니다.
이 List에 app의 이름을 적어주기만 하면 app이 등록됩니다.

INSTALLED_APPS = [
      'firstapp',
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
 ]

다른 app들에 대해서 지금은 신경쓰지 않겠습니다.
지금 중요한 것은 우리가 생성한 app을 프로젝트에 등록했다는 사실입니다.

이제 Django가 동작하는 프로세스를 알아보도록 하겠습니다.


실생활에서 쇼핑몰의 웹페이지에 접속하는 경우를 살펴보겠습니다.

어떤 쇼핑몰 웹페이지에 접속하기 위해 browser의 주소창에 url을 입력합니다.

어떤 쇼핑몰 웹페이지의 주소가 www.devzunky.com이라고 하겠습니다. 이 url을 root URL이라고 표현합니다.

그리고 이 쇼핑몰은 각 상품에 따라 url를 나눠놨다고 가정하면
outer의 목록을 보여주는 웹페이지의 url은
www.devzunky.com/outer일 것입니다.

그리고 outer중에 첫번째 항목을 클릭하면 www.devzunky.com/outer/0001로 이동할 것입니다.

이를 django의 입장에서 생각해보겠습니다.


devzunky라는 프로젝트 안에
outer, inner, pants등등 application이 나눠져 있고 각 페이지 목록에서 특정 아이템페이지로 넘어간다면 그에 해당하는 View를 보여주라고 명령합니다.


다시 한 프로세스, 한 프로세스씩 Django에 대입하면서 보겠습니다.

www.devzunky.com/outer/0001로 이동하게 되면

  1. Django는 프로젝트의 urls.py파일을 봅니다.

  2. outer에 해당하는 url을 찾습니다. outer 폴더의 urls.py를 봅니다.

  3. 0001에 해당하는 url을 찾습니다. 그에 해당하는 view가 있으면 그 view를 보여줍니다.