3. 'Hello World' 출력하기

LouAn Lee·2022년 11월 24일
0

django에서 hello world 출력하기

앞 장에서 이야기 했듯이, Urls, views, (model), template을 활용하여 hello world를 출력해보면 보다 구체적으로 django의 flow를 이해할 수 있을 것이다.
앞장의 1. (세팅/설치 완료 후) 장고 시작하기 에서 project와 app의 생성을 마쳤다면 이제 html로 뭔가를 할 수 있는 시간이 왔다.

먼저 app폴더 안에 views.py를 열고 아래와 같이 입력해보자.

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world!")

이렇게 하면 뭔가 index라는 함수에 접근하면 HttpResponse의 형태로 "Hello, world!"라는 string을 담아서 보내줄(return)것만 같은 기대감에 휩싸이게 되는데 맞다.

자 이제 그럼, 내가 뭔가를 주세요 하면 보내줄 수 있는 view를 만들었으니 계속에서 request를 받아서 만든 페이지로 안내할 기능을 세팅해줘야 한다. 이러한 기능은 url에서 정할 수 있다. project를 만들 때 생성된 urls.py파일을 열고 아래와 같이 urlpattern에 방금 만든 view를 어떻게 호출할 수 있는지 규칙을 적어주자.

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

urlpatterns = [
    path("admin/", admin.site.urls), #생성될 때 기본적으로 존재
    path('main/', include('main.urls')),
]
  • path(아래 내용은 대부분 공식문서를 그대로 + 약간의 설명)
    - route부분?
    URL 패턴을 가진 문자열 입니다. 요청이 처리될 때, Django 는 urlpatterns 의 첫 번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때 까지 요청된 URL 을 각 패턴과 리스트의 순서대로 비교함.
    - view 부분?
    django에서 일치하는 패턴을 찾으면 (HttpRequest 객체를 첫번째 인수로하고, 경로로부터 캡쳐된 값을 키워드 인수로 하여 특정한, 복잡하니 일단은 모른다고 치고) 해당 view함수를 호출합니다. 여기서는 그 해당 view를 지정해 주는 것이지요.
  • include란?
    include()는 다른 URLconf들을 참조할 수 있도록 도와주는 함수로, django가 include를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속처리를 위해 include된 부분을 URLconf로 전달한다. 즉, main.urls에서 잡혀있는 url부분 이후에 해당 url이 붙는다고 가정하고 하나씩 찾아다니는 것이다. 만약 main.urls가 시작점(아무 추가 url없는 상황 예를 들어, {www.example.com}이라고 하면 {www.example.com} + /main이런 식으로.
    따라서, 당연하게도 이 함수는 다른 URL 패턴을 포함할 때마다 항상 include()를 사용해야 합니다. admin.site.urls가 유일한 예외인데 이는 보편적으로 django에서 로긴 시스템이 구현되기 때문에 그냥 기본적으로 깔려있는 상황이라는 점을 상기하면 이해하기 쉬울 것이다.
    자 이제 다 왔다. terminal을 열고, manage.py가 있는 폴더로 이동해서 다음과 같이 입력하자.

    python manage.py runserver

그럼 terminal에 메시지들이 쭉 뜨고 아래와 같은 주소가 뜰 것이다. (localhost의 8000번 포트)
http://127.0.0.1:8000/
설레는 맘으로 클릭해보자.

에러가 날 것이다!
정확한 url(내가 추가로 만든 url)을 입력하지 않았기 때문이다. 위의 urls에 내가 추가하면서 지정한 주소를 찾아 http://127.0.0.1:8000/ 뒤에 추가해보자.(여기서는 main)
http://127.0.0.1:8000/main/

이제 제대로 뜰 것이다.

여기까지 잘 따라오셨다면!? 이제 모든 준비가 된 것이다. 다음 목표를 향해 떠나보자.

profile
데이터 사이언스

0개의 댓글