python/Django

[Django] 2. 서비스 생성

끼발자 2021. 12. 21. 11:13
반응형

책에서는 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