수정한 라인은 # 으로 표시. 

1. 장고 개발 흐름

1) pybo(앱) 호출 -> 2) urls.py 에서 호출 -> 3) views.py 에서 기능 호출.

urls.py는 주소만 담고 있는 중간다리이며, 기능은 views.py 에 코딩되어있다.

 

앱(APP)

앱 생성

(yoursite) C:\projects\yoursite>django-admin startapp pybo

urls.py

[파일 이름 : c\projects\yoursite\config\urls.py] 에 매핑 추가

from django.contrib import admin
from django.urls import path
#from pybo import views

urlpatterns = [
    path('admin/', admin.site.urls),
#    path('pybo/', views.index)
]

url 분리

pybo앱에 관련된 것은 pybo에서 관리하기 위해, url을 분리하여 관리해줄 것이다.

[파일이름 : c\projects\yoursite\config\urls.py] 수정

from django.contrib import admin
from django.urls import path#, include
#삭제

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

path('pybo/', include('pybo.urls'))의 의미는 pybo/로 시작하는 페이지를 요청하면, pybo/urls.py 파일의 매핑 정보를 사용한다는 의미.

pybo 하위에 urls.py 파일 생성

[파일이름 : c\projects\yoursite\pybo\urls.py] 전부 해당 코드로 대체

from django.urls import path

from . import views

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

from . 은 현재 위치(c\projects\yoursite\pybo)를 가리킴.

path에 ''로 요청이 생략된 이유는 이미 config\urls.py로 부터 요청이 들어왔기 때문.

path로 http://127.0.0.1:8000/pybo/ 로 request 가 들어오면, pybo/views.py 의 index 함수에 request가 전달.

views 함수 추가

pybo/urls.py 로부터 views 함수들이 호출된다. index함수가 호출되었으니 간단히 응답의 하는 idex함수를 추가해보자.

[파일이름 : c\projects\yoursite\pybo\views.py] 전부 해당 코드로 대체

from django.http import HttpResponse


def index(request):
    return HttpResponse("안녕하세요 pybo에 오신것을 환영합니다.")

HttpResponse는 요청 페이지에 대한 응답을 하는 장고 클래스.

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

즉, http://127.0.0.1:8000/pybo/ 를 통해 서버에 pybo를 호출 해달라는 요청(request)을 한다. 해당 request는 config\urls.py에서 pybo\urls.py 를 거쳐 pybo\views.py 의 index함수의 매개변수로 들어가 index함수를 호출하는 것이다.

앱 사용

(yoursite) C:\projects\yoursite>python manage.py runserver

를 통해 서버를 다시 시작하고 웹 브라우저에 http://127.0.0.1:8000/pybo/ 라는 request를 보내보자.

yoursite 프로젝트의 pybo 앱이 잘 작동하고 있는 것을 확인 할 수 있다.

+ Recent posts