본문 바로가기

[Python] django 앱(App) 만들기 urls.py 와 views.py

액트 2022. 8. 29.
반응형

mysite 프로젝트 생성하고 코드 에디터인 파이참까지 설치했습니다.

이제는 이 프로젝트에 하나하나 기능을 추가할 차례입니다.

이 기능을 추가하기 위해선 앱을 생성해야 합니다.

게시판 기능을 담당할 pybo 앱을 생성해 봅시다.

생성하는 방법은 cmd(명령 프롬프트)에서 startapp 명령어를 사용하면 됩니다.

CMD(명령 프롬프트)를 실행 >> mysite 입력하여 가상 환경 진입 >> django-admin startapp pybo 명령어 입력

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

파이참에서 확인해보시면 mysite 밑에 pybo라는 디렉터리가 생성되었고 그 안에 각종 파이썬 파일들이 생성되었습니다.

이렇게 하면 pybo 라는 페이지가 생성된 것입니다. 주소는 http://localhost:8000/pybo입니다.

장고의 urls.py 파일은 URL 매핑을 위한 파일입니다. http://localhost:8000/pybo 가 호출되었을 때 어느 페이지를 출력해주냐가 바로 이 파일에 정의되어 있습니다.

어느 페이지를 출력해주냐에서 어느 페이지는 바로 views.py 에 정의되어 있습니다. 

그렇다면 먼저 페이지가 정상적으로 출력되기 위해서 URL 매핑을 추가해 줘야 합니다.

mysite 밑에 있는 config 디렉터리에 보면 urls.py라는 파일이 있습니다.

 

urls.py

이 파일은 페이지 요청이 발생하면 가장 먼저 호출되는 파일로 URL과 뷰 함수 간의 매핑을 정의해줍니다.

뷰 함수는 views.py 파일에 정의된 함수를 말합니다.

URL 매핑을 추가하기 위해 config 밑에 있는 urls.py 파일을 수정합니다.

mysite\config\urls.py 파일을 파이참으로 오픈하고 import ... 를 클릭합니다.

from django.urls import path 줄 밑에 from pybo import views라고 작성합니다.

다음 path('admin/', admin.site.urls) 아래에 path('pybo/', views.index),라고 작성합니다.

pybo/ URL 요청이 오면 views.index를 호출하라는 매핑을 urlpatterns에 추가하였습니다.

view.index 는 views.py 파일의 index 함수를 의미합니다.

 

views.py

그럼 이제 views.index 함수를 추가해줘야 합니다.

mysite\pybo 디렉터리 내에 views.py 에 index 함수를 정의해 줍시다.

from django.http import HttpResponse

def index(request):
    return HttpResponse("안녕하세요 pybo 페이지 입니다.")

index 함수는 request라는 매개변수를 받아 "안녕하세요 pybo 페이지입니다."라는 문자열을 브라우저에 출력합니다.

저장 후에 http://localhost:8000/pybo에 접속해 봅시다. 아래와 같이 정상 출력됩니다.

URL 분리

현재 흐름은 PC 브라우저에서 로컬 서버인 http://localhost:8000/pybo로 접속하면 

config\urls.py 파일에서 /pybo URL 매핑을 확인하여 views 파일의 index 함수를 호출하고 

호출한 결과를 브라우저에 출력합니다.

pybo 앱과 관련된 것들은 pybo 앱 디렉터리 하위에 위치해야 관리하기가 편합니다.

작성했던 config\urls.py 파일을 수정하여 pybo 앱 관련된 것들을 pybo 앱 디렉토리 하위에 위치하게끔 수정합니다.

mysite\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')),
]

 pybo\ URL에 대한 매핑을 path('pybo/', views.index)에서 path('pybo/', include('pybo.urls'))로 수정했습니다.

이제는 pybo/ 로 시작하는 페이지를 요청하면 pybo의 urls 파일의 매핑 정보를 읽어서 처리하라는 의미입니다.

이제부터는 http://localhost:8000/pybo로 시작하는 하위 페이지는 config\urls.py 파일이 아닌 pybo\urls.py 파일을 수정하면 됩니다.

자 그럼 pybo 디렉터리 하위에 urls.py 파일을 생성합시다.

파이참에서 mysite\pybo 디렉터리에서 마우스 우클릭 > New > FIile을 클릭하여 파일명을 urls.py로 입력합니다.

생성된 mysite\pybo\urls.py 파일에 다음과 같이 작성합시다.

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
]

저장 후에 웹서버를 종료하고 다시 시작하고 http://localhost:8000/pybo 페이지를 요청해 봅시다

(myvenv) c:\projects\mysite>python manage.py runserver

점프 투 장고 책을 보면서 공부한 내용을 기록하였습니다. 보다 정확하고 자세한 내용은 책을 참고해 주시기 바랍니다.

반응형

댓글