우리는 앞에서 mysite 프로젝트를 생성했다.
2024.06.26 - [Django] - (1) 장고 프로젝트 생성하기
(1) 장고 프로젝트 생성하기
1. git & Anaconda 설치하기가상환경을 만들기 위한 프롬포트를 사용하고자 설치하는 과정이다.*anaconda 대신 miniconda를 설치해도 됨2. Anaconda로 가상환경 생성하기1) anaconda prompt 들어가기*유용한 명
kysf.tistory.com
하지만 프로젝트 단독으로는 아무런 일도 할 수 없다.
프로젝트에 기능을 추가하기 위해 게시판 기능을 담당할 pybo 앱을 생성해보자.
1. pybo 앱 생성하기
명령 프롬프트에서 django-admin의 startapp 명령을 이용하여 pybo 앱을 생성하자.
django-admin startapp pybo

명령을 실행하면 아무런 메시지 없이 종료된다.
하지만 다음과 같이 pybo 앱 관련한 파일과 디렉터리가 생성되었음을 확인할 수 있다.

2. 장고 프로그램 만들기
이제 본격적으로 장고 프로그램을 만들어 보자.
브라우저에서 http://localhost:8000/pybo 페이지를 요청했을 때
"안녕하세요 pybo 입니다."
라는 문자열을 출력하도록 만들어 보자.
먼저 로컬서버를 구동하자.
python manage.py runserver
그리고 그냥 한 번 브라우저에 http://localhost:8000/pybo 페이지를 요청해 보면
다음과 같이 "Page not found (404)" 라는 오류가 발생할 것이다.
*404는 HTTP 오류코드 중 하나이다. (브라우저가 요청한 페이지를 찾을 수 없을 경우 발생)

장고는 오류가 발생 시, 오류의 원인을 화면에 자세히 보여주기 때문에 오류를 파악하기 쉽다.
오류의 내용을 보면 config/urls.py 파일에 요청한 pybo/ URL에 해당되는 매핑이 없다고 적혀 있다.
그렇다면 다음 오류를 해결하기 위해 config/urls.py 파일에 pybo/ URL 에 대한 매핑을 추가해줘야 한다.
[ urls.py: 페이지 요청 발생 시 가장 먼저 호출되는 파일로 URL과 뷰 함수 간의 매핑을 정의함. ]
3. urls.py 수정하기
URL 매핑을 추가하기 위해 config 디렉토리 내의 config/urls.py 파일을 다음과 같이 수정하자.

이는 pybo/ URL 이 요청되면 views.index를 호출하라는 매핑으로, urlpatterns에 추가하였다.
이 때 views.index 는 views.py 파일의 index 함수를 의미한다.
urlpatterns에서 실제 URL은 http://localhost:8000/pybo 이지만 호스트명과 포트가 생략된 pybo/로 매핑해야 한다.
왜냐하면 호스트(예:localhost)와 포트(예:8000)는 서버는 어떤 환경에서 실행되는지에 따라 변하기 때문이다.
4. views.py 수정하기
이제 URL 매핑에 추가한 뷰 함수인 views.index를 pybo/views.py 파일에 추가해보자.

HttpResponse는 요청에 대한 응답을 할때 사용하며,
여기서는 "안녕하세요 pybo 입니다." 라는 문자열을 브라우저에 출력하기 위해 사용되었다.
이렇게 뷰 함수를 작성하고 다시 http://localhost:8000/pybo 페이지를 요청해 보면 다음과 같은 결과를 볼 수 있을 것이다.

첫 번째 장고 프로그램이 완성되었다!
[장고 개발 흐름 정리]

[1] 브라우저에서 로컬 서버로 http://localhost:8000/pybo 페이지를 요청
[2] urls.py 파일에서 /pybo URL 매핑을 확인하여 views.py 파일의 index 함수를 호출
[3] 호출한 결과를 브라우저에 반영
5. URL 분리하기
pybo 앱에 관련한 것들은 pybo 앱 디렉터리 하위에 위치해야 한다.
하지만 이대로라면 pybo와 관련된 URL 매핑을 추가할 때마다config/urls.py파일을 수정해야 한다.
config의 urls.py 파일은 앱이 아닌 프로젝트 성격의 파일이므로 pybo 앱에서만 사용하는 URL 매핑을 분리해주자.
1) config/urls.py 파일 수정

2) pybo/urls.py 생성 및 수정
이제 pybo 디렉토리 내에 urls.py를 새로 생성하여 다음과 같이 작성하자.

이렇게 URL을 분리해도 아래와 같은 원리에 의해 기존 config/urls.py 파일에 설정했던 내용과 별반 차이가 없다.

이제 다시 http://localhost:8000/pybo 페이지를 요청해 보자.
URL 분리 후에도 동일한 결과가 나타나는 것을 확인할 수 있을 것이다.

'Django' 카테고리의 다른 글
| (6) URL 별칭 (0) | 2024.07.02 |
|---|---|
| (5) Pybo 질문 목록과 상세 기능 구현하기 (0) | 2024.07.02 |
| (4) 장고 관리자 (1) | 2024.07.02 |
| (3) 장고에서 모델 사용하기 (0) | 2024.07.01 |
| (1) 장고 프로젝트 생성하기 (0) | 2024.06.26 |