안녕하세요. 밤고래에요 :)
이번 페이지에서는 상세 기능들을 구현하면서 장고 개발을 하는데 필요한 기본 내용을 다루겠습니다.
* 주요 목표
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 매핑파일을 쪼갤 수 있다.
'IT' 카테고리의 다른 글
[프로그래밍] Chap 2. 장고 기본 요소 학습#3 (DB:데이터생성/수정) (0) | 2021.04.30 |
---|---|
[프로그래밍] Chap 2. 장고 기본 요소 학습#2 (DB:테이블생성) (0) | 2021.04.29 |
[프로그래밍] Chap 1. 장고 개발 환경구축 (Python/Pycharm) (0) | 2021.04.22 |
[프로그래밍] UiPath 스터디#1(출력 및 변수/자료형) (0) | 2021.04.21 |
[프로그래밍] 유니티 : 개발 사전 지식 2 (0) | 2021.03.19 |
댓글