본문 바로가기
IT

[프로그래밍] Chap 2. 장고 기본 요소 학습#1 (Urls)

by 밤고래 2021. 4. 22.
반응형

안녕하세요. 밤고래에요 :)

이번 페이지에서는 상세 기능들을 구현하면서 장고 개발을 하는데 필요한 기본 내용을 다루겠습니다. 

 

* 주요 목표

1) urls.py 파일을 이용해 URL과 매핑되는 뷰 함수 관리

2) 장고 ORM을 이용해 데이터베이스 베이스 제어

3) 게시판에 질문 목록과 질문 상세 기능 만들기

 

 

 

Chapter 2. 장고의 기본 요소 익히기!

2-1 주소와 화면을 연결하는 URL 과 뷰(p39)

 

[실습] 앱 생성하고 확인하기

게시판 만들기에 필요한 pybo 앱을 만들어 보며 스터디해보자

 

Step 1. pybo 앱 생성하기

명령 프롬프트에서 아래 커맨드 입력하여 pybo 앱 생성하자

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

 

Step 2. 생성된 앱 확인하기

아래와 같이 파이참 왼쪽 리스트에 'pybo' 디렉터리가 생성되었다.

 

[실습] 안녕하세요 파이보?

파이보를 이용해서 간단한 웹사이트 제작 실습을 시작해보자

 

Step 1. 개발 서버 구동하기

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

 

Step 2. localhost:8000/pybo 에 접속하기

Step 3. 오류 메시지 확인하기

이 오류는 왜 발생했을까?

장고는 사용자가 웹 브라우저에서 /pybo/라는 페이지를 요청하면

해당 페이지를 가져오는 URL 매핑이 있는지 config/urls.py 파일을 뒤져 찾아본다.

그런데 아직 /pybo/ 페이지에 해당하는 URL 매핑을 장고에 등록하지 않았다. 

그래서 장고는 위 페이지를 찾을 수 없다고 메시지를 보낸 것이다

웹브라우저에서 장고 페이지 요청시에는 config/urls.py를 가장 먼저 호출한다.

 

Step 4. config/urls.py 수정하기

URL 매핑을 추가하기 위해 config/urls.py 파일을 수정하자

 

 

pybo의 views 파일을 import 하고(line 18) 

urlpatterns 에 pybo/매핑되는 함수를 추가한다.(line 22)

위의 의미는 URL로 localhost:8000/pybo를 입력받으면, views.py 파일에 있는 index 함수를 실행시켜라이다

장고는 이런식으로 URL 과 파이썬 함수를 매핑한다

 

Step 5. config/urls.py 다시 살펴보기

urlpatterns 에는 실제 입력값 localhost:8000/pybo 에서 localhost 와 포트번호 :8000이 생략된다. 

이는 장고가 실행되는 환경에 따라 변하며, 장고가 이미 알고있다. 별도로 입력하지 않는다.

 

Step 6. 오류 메시지 확인하기

다시 localhost:8000/pybo 에 접속해보자

이전에 404 error 가 발생한 것과는 다르게 '사이트에 연결할 수 없음' 오류가 표시된다.

 

config/urls.py 파일을 수정했음에도 이런 오류가 발생하는 이유는, 

localhost:8000/pybo 와 view.index 함수를 매핑했지만, 

정작 우리는 view.index 함수를 정의하지 않았다!

 

Step 7. pybo/views.py 작성하기

Step 8. 첫번째 장고 프로그램 완성!

 

[실습] 장고 개발 흐름 정리하기

지금까지 한 개발 과정은 앞으로 모든 실습과정에서 계속 반복한다!

다음 이미지로 장고 개발의 프로세스를 정리해보자

1) 웹 브라우저 창에 localhost:8000/pybo 입력(장고 개발 서버에 /pybo/ 페이지 요청).

2) config/urls.py 파일에서 URL을 해석해 pybo/views.py 파일의 index 함수 소출

3) pybo/views.py 파일의 index 함수를 실행해 함수 실행 결과를 웹 브라우저에 전달.

 

[실습] URL 분리하기

Step 1. config/urls.py 다시 살펴보기

pybo 앱 관련 파일은 대부분 pybo 디렉터리 안에 있다.

그러나, config/urls.py 파일은 pybo 디렉터리에 없다. 

이러한 방식은 프로젝트 짜임새를 고려하지 않은 것이다. 

pybo 앱 관련 url.py 파일을 따로 구성해보자

 

Step 2. config/urls.py 수정하기

include 함수를 임포트해보고 수정해보자

pybo/ 로 시작되는 페이지 요청은 모두 pybo/urls.py 파일에 있는 URL 매핑을 참고하여 처리하라는 의미이다.

이렇게 앱 단위로도 url 매핑파일을 쪼갤 수 있다.

반응형

댓글