이전에 프로젝트를 만들었지만 프로젝트에 기능을 추가하기 위해서는 앱을 생성해야한다.
(mysite) stdiohan@stdiohan-MacBookPro mysite % django-admin startapp pybo
(mysite) stdiohan@stdiohan-MacBookPro mysite %
파이참 터미널에 django-admin startapp pybo 를 입력해 앱을 생성한다.
브라우저에서 http://localhost:8000/pybo 페이지를 요청했을때 "안녕하세요 pybo입니다." 라는 문자열을 출력해보자
먼저 터미널에 python manage.py runserver 를 입력해 로컬서버를 구동한다.
(mysite) stdiohan@stdiohan-MacBookPro mysite % python manage.py runserver
그후 브라우저에 http://localhost:8000/pybo 를 검색하면
장고는 오류가 발생하면 오류의 원인을 화면에 자세히 보여주어서 오류를 파악하기가 쉽다. 오류를 해석하면 요청한 URL은 http://localhost:8000/pybo 이다. 오류 해결방법은 config.urls 파일안에 URLconf를 정의하라고 나온다. 그렇다면 그대로 해주면 된다. urls.py 파일은 페이지 요청이 발생하면 가장 먼저 호출되는 파일이다.
config.urls 파일은 projects/mysite/config/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 파일에
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 만 수정해 작동할수있게 해보자.
전에 적었던 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 |