
Django 공부하기 ✨
참고 사이트 : 파이보 (점프 투 장고)
Django에서 URL과 View란?
(1) URL
- URL은 웹 페이지나 리소스를 식별하는 데 사용되는 문자열이다.
- 장고에서 URL은 웹 애플리케이션의 각 뷰(View)에 연결되어 요청된 URL에 따라 적절한 뷰(View)가 호출된다.
(2) View
- 뷰는 URL에 응답하기 위한 Python 함수이다.
- 장고에서 뷰 함수는 URL 패턴과 연결되어 특정 URL 요청에 대한 응답을 처리한다.
- 뷰 함수는 HTTP 요청을 받고, 데이터를 처리하거나 템플릿을 렌더링하여 클라이언트에게 응답을 반환한다.
(1) 앱(App)
- mysite 프로젝트를 생성한 상태이다. 하지만 프로젝트 단독으로는 아무런 일도 할 수 없다.
- 프로젝트에 기능을 추가하기 위해서는 앱(App)을 생성해야 한다.
- 명령 프롬프트(cmd)에서 django-admin의 startapp 명령을 이용하여 pybo 앱을 생성하자.
// (1) pybo 앱 생성하기
(mysite) C:\projects\mysite>django-admin startapp pybo
- 명령을 실행하면 아무런 메시지 없이 종료된다.
- 하지만 pybo 앱 관련한 파일과 디렉터리가 생성되었음을 확인할 수 있다.
- C:\projects\mysite로 디렉터리 이동 -> gitbash 에서 .code -> 비주얼 스튜디오 코드 실행

// (2) 가상 환경 진입하기
C:\projects\mysite>mysite
// (3) 로컬 서버 실행하기
(mysite) C:\projects\mysite>python manage.py runserver
(2) Hello Pybo
- 브라우저에서 http://localhost:8000/pybo 페이지 요청

- 브라우저가 요청한 페이지를 찾을 수 없을 경우에 발생하는 404 에러 발생한다.
- 오류를 해결하기 위해서는 config/urls.py 파일에 pybo/ URL에 대한 매핑을 추가해야 한다.
(3) urls.py
- URL 매핑을 추가하기 위해 urls.py 파일을 수정해야 한다.
// (4) config/urls.py 파일 수정하기
from django.contrib import admin
from django.urls import path
from pybo import views // 추가된 코드
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', views.index), // 추가된 코드
]
- pybo/ URL이 요청되면 views.index를 호출하라는 매핑을 urlpatterns에 추가하였다.
- views.index는 views.py 파일의 index 함수를 의미한다.
- urlpatterns에서 실제 URL은 http://localhost:8000/pybo 이지만 호스트명과 포트가 생략된 pybo/로 매핑해야 한다. 왜냐하면 호스트(예:localhost)와 포트(예:8000)는 서버가 어떤 환경에서 실행되는지에 따라 변하기 때문이다.
(4) views.py
- 404에러는 발생하지 않지만 "사이트에 연결할 수 없음"이라는 오류가 화면에 표시되는 상태이다.
- pybo/views.py 파일에 index 함수를 추가해야 한다.
// (5) pybo/views.py 파일 수정하기
from django.http import HttpResponse // 추가된 코드
def index(request): // 추가된 코드
return HttpResponse("안녕하세요 pybo에 오신것을 환영합니다.")

(5) 장고 개발 흐름 정리하기
- 브라우저에서 로컬 서버로 http://localhost:8000/pybo 페이지를 요청
- urls.py 파일에서 /pybo URL 매핑을 확인하여 views.py 파일의 index 함수를 호출
- 호출한 결과를 브라우저에 반영
(6) URL 분리
- 현재 상태로는 pybo와 관련된 URL 매핑을 추가할 때마다 config/urls.py 파일을 수정해줘야 한다.
- 이러한 문제를 해결하기 위해 config/urls.py 파일을 수정해야 한다.
// (6) 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')), // 수정된 부분
]
- path('pybo/', include('pybo.urls'))의 의미는 pybo/로 시작하는 페이지를 요청하면 이제 pybo/urls.py 파일의 매핑 정보를 읽어서 처리하라는 의미이다.
- 그러므로 pybo/urls.py 파일을 생성해야 한다.
// (7) pybo/urls.py 생성하기
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
- path('', views.index) 처럼 pybo/ 가 생략된 ' ' 이 사용되었다. 이렇게 되는 이유는 config/urls.py 파일에서 이미 pybo/로 시작하는 URL이 pybo/urls.py 파일과 먼저 매핑되었기 때문이다.
- 즉, pybo/ URL은 다음처럼 config/urls.py 파일에 매핑된 pybo/ 와 pybo/urls.py 파일에 매핑된 ' ' 이 더해져 pybo/가 된다.
- 오류가 발생한다면 로컬 서버를 재시작 해야 한다.
'Study > Django' 카테고리의 다른 글
| [Django] 관리자 사용하기 (7) (0) | 2023.09.08 |
|---|---|
| [Django] 모델 (6) (0) | 2023.09.08 |
| [Django] 프로젝트 생성하기 (4) (0) | 2023.09.08 |
| [Django] 개발 환경 준비하기 (3) (0) | 2023.09.08 |
| [Django] 파이썬 설치하기 (2) (0) | 2023.09.08 |