본문 바로가기
Django

(2) phybo 앱 생성 및 장고 프로그램 만들기

by kingyejin 2024. 7. 1.

 

우리는 앞에서 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.indexpybo/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