본문 바로가기

Django/따라하는 장고

4. 파이참의 기본 요소

이전에 프로젝트를 만들었지만 프로젝트에 기능을 추가하기 위해서는 앱을 생성해야한다.

(mysite) stdiohan@stdiohan-MacBookPro mysite % django-admin startapp pybo
(mysite) stdiohan@stdiohan-MacBookPro mysite %

파이참 터미널에 django-admin startapp pybo 를 입력해 앱을 생성한다.

왼쪽 탭을 확인해보면 pybo 디렉토리와 하위 파일들이 생성되었다

브라우저에서 http://localhost:8000/pybo 페이지를 요청했을때 "안녕하세요 pybo입니다." 라는 문자열을 출력해보자

먼저 터미널에 python manage.py runserver 를 입력해 로컬서버를 구동한다.

(mysite) stdiohan@stdiohan-MacBookPro mysite % python manage.py runserver

그후 브라우저에 http://localhost:8000/pybo  를 검색하면

Page not found(404) 오류가 나온다

장고는 오류가 발생하면 오류의 원인을 화면에 자세히 보여주어서 오류를 파악하기가 쉽다. 오류를 해석하면 요청한 URL은 http://localhost:8000/pybo 이다. 오류 해결방법은 config.urls 파일안에 URLconf를 정의하라고 나온다. 그렇다면 그대로 해주면 된다. urls.py 파일은 페이지 요청이 발생하면 가장 먼저 호출되는 파일이다.

config.urls 파일은 projects/mysite/config/urls.py 에 있다.

urls.py 파일을 찾아 수정해준다

19줄에 from pybo import views , 23줄에 path('pybo/', views.index), 를 추가해준 모습이다. 의미는 'pybo/' 라는 URL이 요청되면 views.index 를 호출하라는 매핑을 urlpatterns 에 추가한것이다. views.index 는 views.py 파일의 index 함수이다. pybo/ 에 / 를 추가하는 이유는 URL 을 정규화하는 장고의 기능 때문이다.

아직 views.index 를 설정하지 않았기 때문에 이 상황에서 다시 페이지를 요청하면 페이지 연결 실패가 나올것이다.

views.py 파일을 수정한 모습이다

views.py 파일에

from django.http import HttpResponse

def index(request) :
        return HttpResponse("안녕하세요 pybo입니다.")

를 작성해 넣어보자 HttpResponse는 요청에 대한 응답을 할때 사용한다. index 함수의 매개변수 request 는 HTTP요청 객체이다.

작성을 했으면 다시 페이지를 요청해보자.

설정한 문자열이 정상적으로 출력된 모습이다

 

지금까지 한 이 과정들은 앞으로 장고를 개발할때 반복하는 계속 반복하는 과정이다.

 

[URL 분리방법]

 

urls.py 파일을 수정해서 앞으로 pybo/page1/create 등 이런형식의 URL을 추가해야할때 config/urls.py 를 수정할 필요없이 pybo/urls.py 만 수정해 작동할수있게 해보자.

config/urls.py 를 수정한것이다

전에 적었던 urls.py 와 달라진것이 보일것이다. path('pybo/', include('pybo.urls')) 의 의미는 pybo/ 로 시작하는 페이지를 요청하면 알아서 pybo/urls.py의 파일의 매핑정보를 읽어서 처리하라는 뜻이다. pybo/urls.py 파일 보고 처리하라고 했으니 파일을 만들자.

Pybo폴더에 마우스 오른쪽 클릭 - New - File 을 한 후 파일명을 urls.py 로 파일을 만든다. 그리고 파일 안에는

사진과 같이 파일을 수정하자

사진과 같이 파일내용을 추가하자. path('',views.index) 을 보면  이전에 설정한 config/urls.py 과 다른 부분은 이 있다. 저번에 적었던 'pybo/' 가 생략되고 '' 가 들어간 이유는 이미 config/urls.py 파일에서 이미 pybo/ 로 시작하는 URL이 pybo/urls.py 파일과 먼저 매핑되었기 때문이다.

config/urls.py 에 입력한 pybo/ 와 이번에 적은 '' 이 합쳐져 최종 URL 이 'pybo/' 가 되는것이다. 만약 다른 URL 을 추가해 pybo/page1/ 을 만들고싶다면 config/urls.py 에 적은 pybo/ 와 pybo/urls.py 에 새로 양식에 맞게 'page1/' 을 적어 넣는다면 최종 URL 은 config/urls.py 에 적은 pybo/ 와 pybo/urls.py 에 적은 page1/ 이 합쳐져 pybo/page1/ 이 되는것이다.

오류가 발생한다면 로컬서버를 재시작 하면 해결된다.

 

 

 

 

'Django > 따라하는 장고' 카테고리의 다른 글

6. 모델 사용법  (0) 2022.10.13
5. 장고 모델 작성법  (0) 2022.10.13
3. 파이참 사용하기  (0) 2022.10.11
2. 장고 프로젝트 생성  (0) 2022.10.11
1. 파이썬과 장고설치  (1) 2022.10.10