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 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 에서 추가해서 사용할 수 있다.
'개인 공부 > 개발' 카테고리의 다른 글
장고 URL과 네임스페이스 (0) | 2021.08.04 |
---|---|
장고 조회와 템플릿 (0) | 2021.08.04 |
장고 관리자 (0) | 2021.08.02 |
장고 개발 환경 설정 (0) | 2021.07.29 |
프로젝트 진행 기록 (0) | 2021.07.29 |
댓글