본문 바로가기

Legacy(~18.10)/Django

[Tutorials] Django공식튜토리얼 - 프로젝트 생성과 간단한 뷰 만들기

반응형

Djang 공식 홈페이지에 나와 있는 튜토리얼 이다.

이 튜토리얼을 처음 설치 부터 배포 까지 내 공부 겸 요약 겸 나중에 참고 할 겸 작성해보려고 한다.

튜토리얼을 그냥 똑같이 따라하면 재미 없으니까, 내 입맛에 따라서, 생략하는 부분도 있을 것이고,

더 추가되는 내용도 있을 것이다.

자세한 설명이 필요한 부분은 따로 해당 주제에 대해서 블로그 글을 쓰는 것으로 하고,

튜토리얼에서는 최대한 기본적인 것들과 실행에 중점을 두고 한다.

Index

  • 개발환경 구축

  • Part1 - 프로젝트 생성과 간단한 뷰 만들기 - Github

  • Part2 - 모델 생성 과 관리자 페이지 - 준비 중

  • Part3 - 뷰와 템플릿 다루기 - 준비 중

  • Part4 - Django 폼과 제네릭뷰 사용 - 준비 중

  • Part5 - 테스트 - 준비 중

  • Part6 - 정적 파일 다루기 - 준비 중

  • Part7 - 관리자페이지 커스터마이징- 준비 중

  • 배포 - Python Anywhere- 준비 중


Part1 - 프로젝트 생성과 간단한 뷰 만들기

이 파트에서는 장고 프로젝트와 앱 생성, 그리고 간단한 장고 뷰를 만들어 보도록 하고,

각 파트마다 내용 설명이 자세하게 들어가야 하는 부분은 생략하고 진행한다.


장고 프로젝트 생성

장고 프로젝트를 생성하기 전에, 파이썬을 설치하면, pip도 같이 설치가 되는데, 이 pip는 파이썬 패키지 관리 시스템으로 쉽게 말하면, 이걸 이용해서 파이썬 라이브러리 혹은 프레임워크들을 설치 할 수 있다.

귀찮게, 사이트 들어가서 다운로드 받고 압축풀고 할 필요 없이 pip 명령어를 이용해서 설치를 간편하게 할 수 있다.

이전 파트에서 pyenv를 정상적으로 잘 설치 했다면, pip도 정상적으로 잘 설치가 되었을 것이다.

#shell
mkdir vote

pip install django #최신 버젼의 장고가 설치된다.
django-admin startproject config # config라는 이름의 장고 프로젝트 생성

mv config src #장고에서 설정관련된 폴더 이름이 장고 프로젝트 명을 따라 가게 되서 나중에 헷갈릴수 있기 때문에, config라고 프로젝트를 생성하고, 루트 폴더는 src로 수정해준다.

위와 같이 두번의 명령어만 쳐주면 장고 프로젝트가 생성이되고 폴더 구조는 다음과 같다.


장고 앱 생성과 Hello World 출력

앱 생성을 위해서, src 폴더로 이동한다.

#shell
#/vote/

cd src
python manage.py startapp polls #polls 라는 장고 앱을 생성한다.

앱을 생성하게 되면, 이제 본격적으로 튜토리얼을 진행 할 수 있다.

그 전에, 앱을 생성했으니, 'Hello World' 를 장고 뷰를 통해서 찍어 볼 것인데,

그 전에 config 폴더 에서 이와 관련된 설정을 해주어야 한다.


1. 앱 등록

# src/config/settings.py

INSTALLED_APPS = [
   '''
   
  'polls' # polls 앱을 추가 해준다.
   
  '''
]

앱을 생성한 다음에는 위와 같이 가장 먼저 INSTALLED_APPS에 내가 생성한 앱을 등록을 시켜줘야 한다.


2. Config 에서 URL path 등록

# src/config/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
   path('admin/', admin.site.urls),
   path('polls/', include('polls.urls')) #방금 추가한 polls 앱에 대한 url path를 추가
   
]

이제 앱을 등록했으니, 앱을 이용하기 위해서는 URL PATH를 등록을 해야한다.

polls와 관련된 어떤 호출을 할 때, 나는 'polls/' 라는 주소를 통해서 호출을 할 것이고, 이 호출은 "include('polls.urls')을 통해서, polls 앱의 urls.py로 라우팅이 된다.


3. App 앱에서 URL Path 등록

src/polls/urls.py 가 없기 때문에 생성을 해주어야 한다.

# src/polls/urls.py

from django.urls import path
from .views import hello_world #hello_world 라는 함수를 현재 폴더의 views.py로 부터 불러온다. (물론 아직 안 만들었기 때문에 오류가 날 것이다.)

urlpatterns = [
   path('', hello_world, name='hellow_world') # /polls/ 로 호출 했을 때, hello_world 함수를 호출 한다라는 뜻이다.
]


4. hello_world 함수 작성

src/polls/views.py 로 이동한 후, 다음과 같이 작성한다.

from django.http import HttpResponse

def hello_world(request):
   return HttpResponse("<h1>Hello World!</h1>")

django 내장 함수 중에 HttpResponse를 가져와서, hello_world가 호출이되었을 때,

리턴 값으로 Hello World를 보여준다.

여기까지 작성한 이후에, 서버를 올리고 브라우져에서

http://127.0.0.1:8000/polls/ 를 입력해보자.

python manage.py runserver

다음과 같이 Hello World!를 볼 수 있다.


위의 과정을 조금 풀어서 설명하자면,

사용자가 브라우저를 통해서 어떤 요청을 했다고 하면,(우리 같은 경우에는 127.0.0.1:8000/polls/ 같이)

장고 서버는 해당 요청을 받아서 젤 먼저 프로젝트 폴더(config)의 urls.py 에 매칭되는 url이 있는지를 살피고, 매칭되는 url을 실행을 하는데, 우리 같은 경우에는 polls 앱의 urls.py로 라우팅을 해놓았기 때문에, polls 앱의 urls.py로 라우팅되고, polls 의 urls.py는 해당 앱의 views.py에 hello_world 함수가 실행되도록 되어있다.

그래서 최종적으로 views.py에 있는 hello_world가 실행이 된다.

Hello world를 띄우기 위한 요청 ~ 응답 Flow

127.0.0.1:8000/polls/ 요청 => config: urls.py => polls app: urls.py => polls app: views.py => hello_world 함수 호출 => 127.0.0.1:8000/polls/ 응답: <h1>Hello world</h1>

위와 같이 Hello World 까지 띄워보는 것을 끝냈다.


이제 앱을 만들었으니 지금부터가 사실상 시작이다.

이제 본격적으로 모델 생성 및 관리자 페이지를 다루는 부분으로 넘어간다.




반응형