본문 바로가기
개인 공부/개발

장고의 기본 요소(url과 view)

by 아메리카노와떡볶이 2021. 7. 29.
728x90

APP(앱)

이전 글에서 말했듯이, 장고의 앱은 하나의 기능이라고 생각하면 된다.

앞서 생성한 mysite 프로젝트에는 아무런 기능이 없으므로, 앱을 생성해서 기능을 추가해야한다.

 

앱을 익히기 위해, 실습으로 게시판 기능을 하는 앱을 생성해보자.

(mysite) D:\projects\mysite>django-admin startapp pybo

pybo라는 이름을 가진 게시판 기능을 하는 app을 생성했다.

이때 django-admin에서 제공하는 startapp 명령을 사용한 것을 기억하자.

pycharm에서 확인해보면 pybo 앱이 생성된 모습이다.

 

Hello Pybo

이제 본격적으로 장고 프로그램을 만들어보는 단계.

브라우저에서 http://localhost:8000/pybo 페이지를 요청했을 때 "안녕하세요 pybo에 오신것을 환영합니다."라는 문자열을 출력하도록 만들어 보자.

하지만 아직 pybo url에 대한 매핑이 설정되어있지 않기때문에 접속이 안된다.

그러기 위해선 config/urls.py 파일에 pybo 앱에 대한 url 매핑을 추가해주어야한다.

여기서 urls.py 파일은 어떤 페이지에 대한 요청이 발생할때 가장 먼저 호출되는 파일로

URL과 뷰 함수간의 매핑을 정의한다.

fromdjango.contribimportadmin
fromdjango.urlsimportpath
from pybo import views

urlpatterns = [
path(
'admin/', admin.site.urls), 
path('pybo/', views.index),
#pybo/ URL이 요청되면 view.index를 호출하라는 의미
]

 

pybo/ 에 대한 url을 view함수와 매핑한 모습

 

여기서 pybo/에 대한 url을 views.py에 index함수로 매핑시켜주었는데 아직까지 index함수에 대한 내용을 설정하지 않았기때문에 views.py에 index함수를 추가해야한다

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

서버 구동 후 pybo 에 접속한 모습

장고의 개발흐름이 위와 같고 자주 반복된다고 하니 기억하자.

 

URL 분리

방금 url 매핑과정을 기억해보면, config/urls.py를 수정해서 view.index함수를 매핑했다.

그런데 pybo 앱에 관련한 것들은 pybo 앱 디렉터리 하위에 위치해야한다. 하지만 이대로라면 pybo와 관련된 url 매핑을 추가할때마다 config/urls.py 파일을 수정해야한다.

보면 pybo 디렉토리의 하위가 아닌 config에 위치한 urls.py를 수정해야하는 문제점

 

이 문제점을 고치기위해 url 분리를 시행한다.

config/urls.py 파일을 다음과 같이 수정하자.

from django.contrib import admin
from django.urls import path, include
from pybo import views # 더 이상 필요하지 않으므로 삭제
urlpatterns = [
path(
'admin/', admin.site.urls),
path(
'pybo/', include('pybo.urls')),
]

include를 통해서 pybo/ url이 요청되면, pybo/urls.py 파일의 매핑 정보를 읽어서 처리하라는 의미이다.

즉 urls.py 파일을 pybo 디렉토리 하위에 생성해줌으로써 앞으로 

pybo 앱에 대한 url을 추가해야할때(ex.. pybo/question/create, pybo/answer/create) 등 

config/urls.py 파일을 수정하지않고(프로젝트 성격이 아닌 앱 성격이기때문에) pybo/urls.py 파일만 수정하면 된다.

 

따라서 pybo 디렉토리에 urls.py 파일을 생성하자

이렇게하면 앞으로 pybo 앱에 대한 url 매핑을 할때 pybo/urls.py 에서 추가해서 사용할 수 있다.

728x90

'개인 공부 > 개발' 카테고리의 다른 글

장고 URL과 네임스페이스  (0) 2021.08.04
장고 조회와 템플릿  (0) 2021.08.04
장고 관리자  (0) 2021.08.02
장고 개발 환경 설정  (0) 2021.07.29
프로젝트 진행 기록  (0) 2021.07.29

댓글