이제 차근차근 myapp를 만들면서 장고의 기능을 하나씩 알아가 보자.
앱(App)
우리는 앞에서 mysite 프로젝트를 생성했다. 하지만 프로젝트 단독으로는 아무런 일도 할 수 없다. 프로젝트에 기능을 추가하기 위해서는 앱을 생성해야 한다. 이제 게시판 기능을 담당할 myapp 앱을 생성해 보자.
(mysite) C:\projects\mysite> django-admin startapp myapp
(mysite) C:\projects\mysite>
Hello Myapp
이제 본격적으로 장고 프로그램을 만들어 보자.
브라우저에서 http://localhost:8000/myapp 페이지를 요청했을 때 "안녕하세요 myapp에 오신 것을 환영합니다."라는 문자열을 출력하도록 만들어 보자.
(mysite) C:\projects\mysite> python manage.py runserver
urls.py
URL 매핑을 추가하기 위해 config/urls.py 파일을 다음과 같이 수정하자.
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', views.index),
]
views.py
이제 다시 http://localhost:8000/myapp 페이지를 요청해 보자. 아마도 "사이트에 연결할 수 없음"이라는 오류가 화면에 표시될 것이다. 오류의 원인은 URL 매핑에 추가한 뷰 함수 views.index가 없기 때문이다.
그렇다면 이제 myapp/views.py 파일에 index 함수를 추가해야 할 것이다. 다음과 같이 추가해 보자.
from django.http import HttpResponse
def index(request):
return HttpResponse("안녕하세요 myapp에 오신것을 환영합니다.")
장고 개발 흐름 정리하기
지금 여러분이 경험한 개발 과정은 앞으로의 실습 과정에서 여러 번 반복될 것이다. 그만큼 이 과정은 중요하다!
장고의 기본적인 흐름을 다시 정리해 보자.
- [1] 브라우저에서 로컬 서버로 http://localhost:8000/myapp 페이지를 요청하면
- [2] urls.py 파일에서 /myapp URL 매핑을 확인하여 views.py 파일의 index 함수를 호출하고
- [3] 호출한 결과를 브라우저에 반영한다.
URL 분리
잠깐, 다음으로 넘어가기 전에 config/urls.py 파일을 좀 손봐주어야 할 것 같다. 다시 강조하지만 myapp 앱에 관련한 것들은 myapp 앱 디렉터리 하위에 위치해야 한다. 하지만 이대로라면 myapp와 관련된 URL 매핑을 추가할 때마다 config/urls.py 파일을 수정해야 한다. config의 urls.py 파일은 앱이 아닌 프로젝트 성격의 파일이므로 이곳에는 프로젝트 성격의 URL 매핑만 추가되어야 한다. 따라서 myapp 앱에서만 사용하는 URL 매핑을 config/urls.py 파일에 계속 추가하는 것은 좋은 방법이 아니다.
좋은 방법이 있다. 먼저 config/urls.py 파일을 다음처럼 수정하자.
from django.contrib import admin
from django.urls import path, include
from myapp import views # 더 이상 필요하지 않으므로 삭제
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')),
]
그렇다면 이제 myapp/urls.py 파일을 생성해야 한다. 파이참에서 myapp/urls.py 파일을 생성하기 위해 [myapp → 마우스 오른쪽 클릭 → New → File]을 한 다음 파일명으로 urls.py를 입력하자.
그리고 myapp/urls.py 파일은 다음과 같이 작성하자.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
이제 다시 http://localhost:8000/myapp 페이지를 요청해 보자. URL 분리 후에도 동일한 결과가 나타나는 것을 확인할 수 있을 것이다.
'프로그래밍 > PYTHON' 카테고리의 다른 글
장고 : 모델 2부 (0) | 2023.07.21 |
---|---|
장고 : 모델 1부 (0) | 2023.07.21 |
장고 : 파이참 사용하기 (0) | 2023.07.21 |
장고 : 프로젝트 생성하기 (0) | 2023.07.21 |
장고 : 개발 환경 준비하기: 파이썬 가상 환경과 장고 설치 (0) | 2023.07.21 |