수정한 라인은 # 으로 표시.
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 앱이 잘 작동하고 있는 것을 확인 할 수 있다.
'Web > django' 카테고리의 다른 글
[python] 5.django(장고) - 기본요소 조회/템플릿 (0) | 2022.02.14 |
---|---|
[python] 4.django(장고) - 기본요소 admin (0) | 2022.02.12 |
[python] 3.django(장고) - 기본요소 model (0) | 2022.02.12 |
[python] 1.django(장고) - 프로젝트 준비 (0) | 2022.02.12 |
[python] 0.django(장고) - Study 목적/내용/참고자료 (0) | 2022.02.11 |