#4. 사전공부 - Django 튜토리얼 따라하기 (polls 앱 만들기)

나른한 개발자·2021년 12월 8일
0

studylog

목록 보기
4/45
post-custom-banner

지난 번에는 장고 설치 및 가상환경 설정을 하였다. 오늘은 장고 사이트에 나와있는 튜토리얼을 따라해보려고 한다.


설문조사앱 만들기

프로젝트 내에 앱을 만들기 위해 다음을 입력하여 polls앱을 추가해 줬다.

python3 manage.py startapp polls
polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

위와 같이 polls 앱이 생기게되고 view.py를 열어 간단한 view를 작성해주었다. 클라이언트의 요청이 들어왔을 때 화면이 보이는 부분이 될 것이다.

from django.http import HttpResponse


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

뷰를 작성해주었다면 해당 url을 최상위 url과 연결 시켜주어야 한다.
우선 현재 polls에는 urls.py가 없으니 하나 생성을 해주고 다음과 같이 프로젝트 최상위 urls.py에 연결될 수 있도록 한다.

polls/urls.py

from django.urls import path

from . import views

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

newsite/urls.py

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

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

다른 url을 연결할 때는 include()함수가 사용된다.
따라서 include 함수를 import해주고 polls의 url을 추가해준다. 이렇게 하면 클라이언트의 요청이 들어왔을 때 url을 파싱하여 해당하는 앱으로 분기를 해준다.

예를 들어, 127.0.0.1/polls 라는 url요청이 들어왔을 때, path함수는 /polls라는 부분에 집중하여 일치하는 urlpattern을 찾을 때 까지 검색한다. 일치하는 패턴을 찾으면 해당 app의 urls로 분기를 해주는 것이다.
분기를 하고나면 polls/urls.py의 내용에 따라 view 내부의 index함수로 연결이 되고 view에 작성한 내용이 클라이언트에게 보여지는 것이다.

이제 서버를 구동하면 위에서 작성한 뷰의 화면이 보인다.


오늘의 배운점은 다음과 같다.

첫번째. 프로젝트와 앱의 차이. 프로젝트는 하나의 웹사이트를 의미한다고 보면 된다. 예를 들어 쇼핑몰이라는 웹사이트를 만들었다고 할 때, 이 쇼핑몰은 하나의 프로젝트가 되는 것이다. 쇼핑몰에는 상품목록, 장바구니, 프로필 관리 등의 기능들이 구현되있을 것이다. 이것은 각각 하나의 앱이 된다. 따라서 프로젝트는 여러 개의 앱을 포함할 수 있고, 앱은 여러 프로젝트에 속할 수 있다.

두번째. url 연결. 클라이언트가 요청한 url을 표시하기 위해 모든 앱들은 고유의 url이 필요하고 각 url들은 프로젝트 상위의 urls.py에 연결이 되어야 한다.

오늘은 서버 구동, 앱 생성까지 해보았고 다음에는 데이터베이스까지 연결하는 부분을 해볼것이다.
오늘은 간단한것만 했는데도 시간이 좀 지체되었는데 다음부터는 속도감 있게 진행해야겠다 !!


+) 시간 설정
장고에서는 시간을 따로 설정하지 않으면 UTC(협정세계시간)으로 나오기 때문에 한국시간으로 설정을 해줘야 한다.

settings.py 에서 다음을 수정한다.

TIME_ZONE = 'Asia/Seoul'
USE_TZ = False



다음 공부도 파이야🔥


참고: stackoverflow -'what's the difference between a project and an app in django?'
Django: https://www.djangoproject.com/

profile
Start fast to fail fast
post-custom-banner

0개의 댓글