웹/Django

첫 번째 장고 앱 작성하기, part ① (Django 문서 참고)

#fdd4ff 2021. 9. 22. 01:01

* 참고문서

1. 장고 공식 문서 : https://docs.djangoproject.com/ko/3.2/intro/tutorial01/

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

2. 점프 투 장고 : https://wikidocs.net/70649 

 

2-01 URL과 뷰

`[완성 소스]` : [github.com/pahkey/djangobook/tree/2-01](https://github.com/pahkey/djangobook/tree/2 ...

wikidocs.net

 

장고 공식문서에서 part 1은 간단한 설문조사(Polls) 어플리케이션을 만드는 과정을 실습하는 내용이다. 

장고 공식문서에서 생략된 설명을 점프 투 장고를 통해 보충해서 게시물을 작성할 예정이다.

 


 

| 목차

 1. 프로젝트 만들기
 2. 개발서버
 3. 설문조사 앱 만들기
 4. 첫 번째 뷰 작성하기
     4-1 view.py 작성
     4-2 urls.py 작성
     4-3 최상위 URLconf 설정
     4-4 실행 흐름

 


 

설문조사 어플리케이션을 만드는 과정은 두 파트로 구성되어 있다

① 사람들이 설문 내용을 보고 직접 투표할 수 있는 개방된 사이트

② 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트

 

 

1. 프로젝트 만들기

Django project를 구성하는 코드를 자동 생성해야한다. 이 과정에서 Django 인스턴스를 구성하는 수많은 설정들이 생성되기 때문에 초기 설정에 주의를 기울여야 한다. 

전 게시물에 만들어놨던 프로젝트

사진에 보이는 순서대로 설명을 첨부하자면 다음과 같다. 

 

mysite/ 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장된다. 이 디렉토리 내의 이름을 이용하여, (mysite.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 import할 수 있다.

1. __init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일

2. asgi.py: 프로젝트를 지원하는 ASGI 호환 웹 서버를 위한 진입점

3. settings.py: 현재 Django 프로젝트의 환경 및 구성을 저장

4. urls.py: 현재 Django project 의 URL 선언을 저장. 

5. wsgi.py: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점

6. manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티

 


 

2. 개발서버

해당 디렉토리에 이동하고 다음 명령어를 통해 Django 개발 서버를 시작할 수 있다. 

$ python manage.py runserver

개발 서버는 순수 Python으로 작성된 경량 웹 서버다. Django에 포함되어 있어 아무 설정 없이 바로 개발에 사용할 수 있다.

주의 할 점은 절대 개발 서버를 운영 환경에서 사용하지 말아야한다.  개발 서버는 오직 개발 목적으로만 사용하여야 한다.

 

 


 

3. 설문조사 앱 만들기

Django에서 우리가 작성하는 각 어플리케이션들은  Python 패키지가 구성된다.

Django 는 앱(app) 의 기본 디렉토리 구조를 자동으로 생성할 수 있는 도구를 제공하기 때문에, 코드에만 더욱 집중할 수 있다.

 

앱을 생성하기 위해 manage.py가 존재하는 디렉토리에서 다음의 명령을 입력해 본다.  (앱에 대한 설명은 첫 게시물 글에 작성했다.)

$ python manage.py startapp polls

 

문서대로 실습을 하게 되면 다음과 같이 polls 라는 폴더가 생긴 것을 볼 수 있다. 이를 이용해 투표 어플리케이션을 만들 것이다. 

 

 


 

4. 첫 번째 뷰 작성하기

polls/view.py 를 열어 파이썬 코드를 입력한다. (뷰 함수는 views.py 파일에 정의된 함수를 말한다)

 

4-1 view.py 작성

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

이는 Django에서 가장 간단한 형태의 뷰이다.

 

* index 함수에 대한 설명 

더보기

 

HttpResponse요청 페이지에 대한 응답을 할때 사용하는 장고 클래스이다. 여기선 문자열을 브라우저에 출력하기 위해 사용되었다.

index 함수의 매개변수 request장고에 의해 자동으로 전달되는 HTTP 요청 객체이다. 

뷰를 호출하려면 이와 연결된 URL 이 있어야 하는데, 이를 위해 URLconf가 사용된다

=> polls 디렉토리에서 URLconf를 생성하려면, urls.py라는 파일을 생성해야 한다.(URL에 대한 매핑을 추가하는 것)

 

 

4-2 urls.py 작성

(장고의 urls.py 파일은 페이지 요청이 발생하면 가장 먼저 호출되는 파일로 URL과 뷰 함수 간의 매핑을 정의한다 )

urls.py 파일을 생성한 후, polls/urls.py 파일에는 다음과 같은 코드가 포함되어 있다.

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

=> ' ' URL 이 요청되면 view.index(view.py의 index함수)를 호출하라는 매핑urlpatterns에 추가하였다.

urlpatterns에서 실제 URL은 http://loacalhost:8000/polls 이지만 호스트(ex: localhost)와 포트(ex:8000)는 서버가 어떤 환경에서 실행되는지에 따라 변경되기 때문에 호스트와 포트를 생략해줘야 한다. 

 

urls.py 파일을 만든 후, 위에 코드와 똑같이 작성해줌

 

 

 

4-3 최상위 URLconf 설정

다음 단계는, 최상위 URLconf (mysite/urls.py)에서 polls.urls 모듈을 바라보게 설정한다.

mysite/urls.py 파일을 열고, django.urls.include를 import 하고, urlpatterns 리스트에 include( )함수를 다음과 같이 추가한다.

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

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

include( )함수는 다른 URLconf들을 참조할 수 있도록 도와준다. django가 함수 include( )를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고 남은 문자열 부분을 후속 처리를 위해 include 된 URconf로 전달한다. =>  include( ) 함수 덕에 URL을 쉽게 연결할 수 있다.

polls 앱에 URconf(polls/urls.py)가 존재하는 한, 어떤 다른 루트 경로에 연결하더라도 앱은 여전히 잘 작동할 수 있다. 

다른 URL 패턴을 포함할 때마다 항상 include()를 사용해야 한다. admin.site.urls가 유일한 예외다.

 

 

브라우저에서 http://localhost:8000/polls/를 입력하면 다음과 같은 화면이 뜬다.

 

 

4-4 실행 흐름

흐름을 그림으로 표현하면 다음과 같다. (위 그림은 점프 투 장고에서 pybo라는 디렉토리를 만들었기 때문에 /pybo로 쓰여있음)

출처 : https://wikidocs.net/70649

브라우저에서 로컬 서버로 http://localhost:8000/polls 페이지를 요청할 경우

1. urls.py 파일에서 'polls' URL 매핑을 확인하여 views.py 파일의 index 함수를 호출

2. 호출한 결과를 브라우저에 반영

3. 브라우저에 보이게 됨

 

 

 


 

 

뒤에 path 함수는 장고 문서에 직접 가셔서 읽어보시는 걸 추천드립니다 :) 

훗날 django에 대해 더 깊이 공부하면서 좀 더 쉽게 설명할 수 있는 게 생기면 다시 고치도록 해보겠습니다. 읽어주셔서 감사합니다!

다음 게시물은 장고 앱 작성하기-part②로 뵙겠습니다.  오타나 오류 지적 환영합니다 :D !!

 

 

 

' > Django' 카테고리의 다른 글

첫 번째 장고 앱 작성하기, part ② (Django 문서 참고)  (0) 2021.09.22
django 시작하기  (0) 2021.09.21