터칭 데이터

장고(Django) App 생성하기 본문

장고 (Django)

장고(Django) App 생성하기

터칭 데이터 2023. 10. 27. 18:50

앱이란 무엇일까?

가상환경을 만들고 그 안에 프로젝트를 만들었으니 이제는 앱(App)을 한번 만들어보겠습니다.

 

그전에 개념을 이해하고 넘어갑시다.

 

우리가 만든 하나의 프로젝트(mysite)는 하나의 웹사이트라고 보면 됩니다.

 

네이버 메인을 살펴보면 메일, 뉴스, 쇼핑 등 여러개의 탭들이 존재하는데 이 하나하나가 앱입니다.

즉 하나의 웹 사이트는 우리가 지난 시간 만든 하나의 프로젝트

웹 사이트내에 있는 여러 기능들은 여러개의 앱이라고 생각하면 이해하시기 편할겁니다.

 

그리고 앱은 하나의 프로젝트에만 속할 수 있는 것이 아닌 다른 사이트, 즉 다른 프로젝트에서도 사용할 수 있습니다.

 

 

 

 

장고에서 앱 생성하기

 

의견을 조사하는 앱을 만들고자 합니다.

 

\DjangoProjects\Scripts\mysite>python manage.py startapp polls

 

위와 같이 python manage.py startapp polls 라고 입력하면 polls라는 앱을 생성합니다.

우리는 코드 몇줄로 DjangoProjects라는 가상환경을 만들고, 그 가상환경에서 mysite라는 프로젝트를 만들고,

그 프로젝트에서 polls라는 앱을 순식간에 만들었습니다.

 

자 우리가 만든 polls라는 앱이 어떻게 만들어졌는지 한번 확인해보겠습니다.

기존에는 mysite라는 폴더내에 mysite라는 동명의 폴더(안에 파일들)와 manage.py파일만 있었지만

polls라는 폴더와 그 안에 여러 파일들이 만들어졌습니다.

 

안에 있는 admin.py~views.py 파일들이 어떤 역할을 하는지는 차차 살펴보겠습니다.

 

 

 

 

 

 

 

그래서 앱(App)은 무슨 일을 하는데?

 

장고에서 앱이 어떤 역할을 하는지 대략이나마 쉽게 체감하고 이해해보도록 하겠습니다.

 

먼저 우리는 URL로 127.0.0.1:8000/polls/ 를 입력시 Hello World가 출력되도록 하는 것을 목표로 하겠습니다.

 

 

 

 

 

 

URL을 정확하게 입력하고 앱이 정상작동 하는 경우입니다.

 

 

 

 

 

기존 URL에 /some_page를 붙여 존재하지 않는 URL을 입력할 때 뜨는 화면입니다.

자세히 보면 GET 방식으로 요청(Request)을 보냈는데 없는 URL이라는 뜻입니다.

그리고 mysite.urls에는 .../some_page라는 url이 없었다는 뜻이기도 합니다.

즉 mysite.urls에 URL을 등록하면 된다는 것을 알 수 있습니다.

 

 

 

 

1. 먼저 mysite 폴더내에 있는 urls.py를 살펴봅시다. 현재는 urlpatterns 안에는 admin과 관련된 url만 존재하는데

admin에 대해서는 나중에 알아보도록 합시다.

 

2. 블록지정된 부분들을 복사합니다.

 

3. 그리고 polls 폴더에 urls.py라는 새파일을 만들어줍니다.

 

 

 

 

 

 

from django.urls import path
from . import views

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

 

새로 만든 polls 폴더내 urls.py에 위와 같은 코드를 입력합니다.

path함수를 해석하면 url 뒤에 아무 것도 붙지 않는다면 "", views.py의 index 함수를 실행하고, 이렇게 뒤에 아무 것도 붙지 않은 url들은 "index"라고 매핑하겠다는 뜻입니다.

 

 

 

 

그리고 이번에는 mysite 폴더내 urls.py로 가서

 

 

블록 쳐진 부분을 코드로 추가해줍니다.

 

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

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

include가 새로 import되고 사용되었는데

include를 해석하면 http://127.0.0.1:8000/polls/ 로 시작하는 모든 URL은 앞으로 polls 폴더의 urls에서 관리한다는 뜻입니다.

 

우리가 바로 위 polls내 urls.py에서 path()를 지정한 것은

http://127.0.0.1:8000/polls/ 라는 URL이 오면 urls.py와 같은 폴더 polls내에 있는 view.py의 index함수를 실행하기 위함이었습니다.

 

 

 

그렇다면 이제는 views.py를 설정해줍시다.

 

polls 폴더내 views.py에서 index함수를 만들고 HttpResponse로 Hello, World를 보내는 코드를 작성합니다.

 

HttpsResponse에 대한 자세한 Docs는 아래와 같은데

https://docs.djangoproject.com/en/4.2/ref/request-response/#httpresponse-objects

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

지금 단계에서는 보통 String을 전달하는데 주로 사용된다는 것만 알아둬도 충분합니다.

 

 

 

 

실제로 URL에 http://127.0.0.1:8000/polls/ 를 입력합니다.

 

정상적으로 출력되는 것을 확인할 수 있습니다.

아까 세웠던 목표를 달성했고 프로젝트내의 앱이 대략 어떤 역할을 하는지 알아볼 수 있었습니다.