책에서는 pybo 라는 이름으로 시작한다.
pybo는 이름일뿐이니 원하는 서비스명을 바꿔줘도 상관없다.
장고 프로젝트 터미널에서 django-admin startapp [서비스명]
을 입력하면, 자동적으로 폴더와 다른 파일들이 생성된다.
pybo라는 서비스를 만들었지만, 큰 토대만 있을 뿐, 실제로 서비스되고있는건 없다.
그렇기때문에 127.0.0.1:8000/pybo 에 접속해도 404가 뜰 것이다.
그럼 해당 url이 어떤 응답을 하도록 코드를 수정해주자.
# config/urls.py
# url 꾸러미들.
from django.contrib import admin
from django.urls import path
from pybo import views # pybo의 views
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/',views.index), # endpoint : pybo, response : index
]
옆에 주석처리가 없는 코드는 자동으로 설정되는 코드이고,
주석으로 달아놓은 라인이 추가한 라인이다.
기본 설정 -> url에 pybo 라는 endpoint를 추가해주고, 해당 url을 통해서 들어오는 요청에 대한 응답은
views.index에서 하도록 설정하라는 의미이다. ( 물론 views는 수정하지 않아서 정상적으로 실행은 안된다. / index는 함수명이다.)
그럼 이제 화면에 표시되는 views의 index 함수를 꾸미러 가보자.
# pybo/view.py
from django.http import HttpResponse # http의 응답
def index(request):
return HttpResponse('Hi pybo') # Hi pybo를 response해라
httpresponse를 통해 Hi pybo 라는 응답을 주도록 구성했다.
이제 localhost:8000/pybo/ 에 접속하면,
이렇게 화면에 텍스트가 출력된다.
그럼 여기서, pybo/create 같이 url을 확장해 나갈 때, config/urls.py에 하나씩 더해가면서 추가해야하는가?
라는 의문이 든다. 우선, 위와 같은 방식으로 만든다면 그렇다.
우리는 pybo 관련 endpoint들을 전부 pybo 폴더 안에 집어넣고싶다. 그 작업을 진행해보자.
config/urls.py 를 수정해보자.
# url 꾸러미들.
from django.contrib import admin
from django.urls import path,include
from pybo import views # pybo의 views
urlpatterns = [
path('admin/', admin.site.urls),
# path('pybo/',views.index), # endpoint : pybo, response : index
path('pybo/',include('pybo.urls')) # pybo/로 연결되는 endpoint는 전부 pybo.urls에서 가지고온다.
]
include 를 임포트하고, 화면을 보여주는 views자리 대신에 include를 넣어줬다.
주석에서 설명하듯, pybo/ 라고 들어오는 요청은, 모두 pybo.urls와 연결해서 보여주라는 의미이다.
그렇다면, pybo에 urls를 만들어주자.
그 다음
from django.urls import path
from . import views
urlpatterns = [
path('',views.index),
]
이렇게 적어주면 된다.
config/urls.py와 많이 닮아있다. 하지만, pybo/ 로 들어오는 요청에 대해서 처리하기 때문에,
BASE_URL 이 ~~~/pybo/ 이므로 빈 문자열을 넘겨주고, 보여주는 화면을 views.index로 넘겨주면,
위와같은 출력에 기능만 분리된 서비스가 된다.
'python > Django' 카테고리의 다른 글
[Django] 6. 장고 템플릿 구현 (0) | 2021.12.22 |
---|---|
[Django] 5. 장고 Admin 활용 (0) | 2021.12.22 |
[Django] 4. 장고 셸을 이용해 데이터 만들기 (0) | 2021.12.21 |
[Django] 3. 모델 적용 (0) | 2021.12.21 |
[Django] 1. 장고 시작 (0) | 2021.12.21 |