개발/PYTHON-DJANGO

파이썬 장고 3. 연습1 - Hello World

Aireee 2021. 6. 21. 01:07
300x250
반응형

모든 프로그램의 시작이라고 할 수 있는 것에 가까운 것이 바로 "Hello World" 가 아닐까 싶다. 지난 시간에 우리는 장고를 설치하고, 프로젝트를 생성하고 하나의 앱을 생성했다. 이번 시간에는 그 앱에 Hello World 라는 글을 쓰고 서버를 실행하여 웹 브라우저로 보기 위한 과정을 진행하면 어떨까 한다. 

1. Hello World 쓰기

mysite \ memberApp \ views.py 파일을 열도록 하자

from django.shortcuts import render

# Create your views here.

아마 소스에 이런식으로 나올 것이다. 이 내용에 몇줄을 집어 넣어 아래와 같이 작성해준다

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def hello_world(request):
	return HttpResponse('Hello world!')

설명해야 하나 싶기는 하지만 설명하자면, def 이라고 쓰여진 것은 하나의 함수다. 그러니까 hello_world 라는 이름의 함수를 하나 만든 것이다. 그리고 이 함수를 요청받으면 Http 형식으로 Hello world 를 보내라 라는 명령어를 만든 것이다. 다만 Http 형식이 뭔지 그냥은 알 수 없으니까 django.http 라는 부분에 있는 HttpResponse 라는 함수를 활용하라고 적어준 것이다. 이것은 이미 만들어져 있는 것이므로 구지 우리가 신경쓸 부분은 아니다. 다만 HttpResponse 라는 명령을 사용하기 위해서는 위와 같은 연결 작업이 꼭 필요하다. 주소를 모르면 집을 찾아갈 수 없으니까, 주소를 적어준것과 같다고 보면 되겠다. 그런데 달랑 views.py 파일에 이렇게 쓴다고, 브라우저에서 Hello World 를 볼 수 있는 것은 아니다. 왜냐하면, HttpResponse 라는 명령어를 가져오기 위해 주소를 부여한 것처럼 Hello World 를 볼 수 있는 주소도 필요하기 때문이다. 

2. 주소 연결 1 

이제 만들어진 views.py 파일에 주소를 부여하면 된다. 주소는 보통 url 이라고 하기 때문에 urls.py 라고 하는 파일의 내용을 수정하면 되는데 코어 부분이라고 할 수 있는 mysite 폴더를 보면 그 아래 파일이 있다. 열어보면

"""pragmatic URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path


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

이런식으로 복잡하게 나오는데 """ 로 시작해서 """ 로 끝나는 부분은 사실상 각주다. 그러니 무시해도 좋다. 영어를 안다면 읽어보면, 사용방법이 들어있다고 보면 된다. 사용방법은 크게 3가지 형태가 있다고 알려주는데, 본인이 현재 알고 있는 방식 즉 사용해본 방식은 가장 복잡한 3번째 방식인 including 방식이다. 하지만 나쁜 방식은 아니니 3번째 방식으로 해보도록 하자. 각주 부분은 수정시에 포함하지 않겠다.

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

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

이렇게 해주었다. 간단히 설명하자면, urlpatterns 라는 변수에 path 라는 함수를 사용해서 'member/'가 되면 memberApp 의 urls.py 파일을 참조하라는 말이다. 이렇게 참조할 수 있도록 하기 위해서 from django.urls import include 라는 함수를 추가해주었다. member/ 가 무슨말이냐면, 브라우저 주소창에 "http://도메인.com/member/" 이런식과 같다고 보면 된다. 그런데!!! memberApp에는 urls 라는 파일이 존재하지 않는다. 그러니, urls.py 라는 파일을 신규로 만들어 주어야만 한다.

3. 주소연결 2

생성한 앱 memberApp 폴더안에 urls.py 라는 파일을 만들고, 아래와 같은 내용을 채워준다

from django.urls import path
from memberApp.views import hello_world

urlpatterns = [
    path('hello_world/', hello_world, name='hello_world')
]

즉 member/ 라는 주소로 들어왔을 때, 이 파일을 참조하게 된다는 것. 사실상 중복된 듯한 모습이지만, 사이트가 커지고 복잡해진다면 깔끔한 코드를 만드는데 도움이 될 것이다. 위에서 설명한 것 처럼 urlpatterns 안에 내용을 보면 주소가 'hello_world/' 라고 되어 있을 때 hello_world 를 실행해라는 명령어이다. 그리고 그 이름이 hello_world 다 라고 마지막에 적어준것이다. 역시 주소 연결을 위해서 위에 2줄을 추가해 주었다. 모르겠다 싶으면 그냥 따라하면 된다. 

4. 접속해보기

만약 서버가 계속 켜져 있다면 자동으로 업데이트 되었을 것이므로 바로 브라우저를 열고 접속해보면 된다. 

접속 주소는 "http://127.0.0.1:8000/member/hello_world" 이다. 만약 도메인과 포트가 다르다면 127.0.0.1:8000 을 고쳐주면 되겠다

반응형