티스토리 뷰

프로그래밍/Python

[Django] 장고 앱 생성하기

돔돔이부하 2021. 12. 22. 05:18
728x90
반응형

domdomi 앱 생성하기

django-admin startapp domdomi

위 명령어로 domdomi 라는 앱을 생성하였다면, 아래와 같은 디렉토리 구조를 가지게 됩니다.

 

이제 manage.py 를 활용해서 개발 서버를 구동시켜보겠습니다.

 

개발 서버 구동하기

python manage.py runserver

개발 서버로 접속하기 위해서는 URL http://127.0.0.1:8000/ 로 접속하면 된다고 합니다.

이제 우리가 방금 만든 domdomi 라는 앱에 접속해보겠습니다.

그럼 위와 같이 404 (페이지 찾을 수 없음) 오류가 나는 것을 확인할 수 있습니다.

이는 오류 메시지에 원인이 이미 나와있습니다.

 

Using the URLconf defined in config.urls. Django tried these URL patterns, in this order:
1. admin/
The current path, domdomi, didn't match any of these.

 

해석하면, "config.urls 설정에 일치하는 URL 패턴이 발견되지 않았다. 현재 등록된 패턴은 admin/ 이 있고, domdomi/ 라는 경로는 어떤 것도 일치하는 것이 없다." 입니다.

 

결국 localhost:8000/domdomi 라는 경로에 접속할 수 있게 해주기 위해서는 URL 매핑을 해줘야 한다는 의미입니다.

 

config/urls.py 파일 수정하여 URL 매핑해주기

config 디렉토리 하위에 있는 urls.py 파일을 텍스트 에디터로 열어 아래와 같이 수정하였습니다.

지금은 domdomi 라는 앱이 한 개 있지만, 나중에 domdaki, domducki 등등의 앱을 여러개 추가한다고 가정하면, 계속해서 import 를 해주고, 그럴 때 views 라는 이름이 겹치는 문제가 생길 수 있습니다. 이 때는 URL 분리하기를 통해서 이 문제를 해결할 수 있는데, 다음 포스트에서 설명해보겠습니다.

 

이제 장고 웹 서버에서는 사용자가 URL에서 /domdomi/ 라는 경로(path)를 요청하게 되면 어떤 기능(함수)를 수행시켜야 하는 지 알게 되었습니다. 이제는 그 함수, 즉 views.index 가 어떤 기능을 수행할 것인지만 정의해주면 되겠습니다.

 

views.py 에 index 함수 정의해주기

생성한 앱의 디렉토리 하위에 있는 views.py 파일의 내용을 아래와 같이 수정해보았습니다.

그러면 이제 장고 웹 서버에서는 사용자가 브라우저의 URL 입력창에서 /domdomi/라는 경로를 요청하게 되면 views.index 즉, domdomi 앱에 있는 views.py 파일의 index 함수를 수행하게 될 것입니다. 그리고 그 index 함수에 정의되어 있는 기능인 HttpResponse 함수를 호출하여 인자 값으로 들어있는 문자열을 사용자 브라우저에 출력시켜주는 것으로 기능이 마무리될 것입니다.

 

한번 해보겠습니다. 아래와 같이 결과가 잘 나오는 것을 확인할 수 있습니다.

그리고 개발 서버 구동하기 위해서 실행해둔 명령 프롬프트(커맨드라인)에서도 신기한 것이 보입니다.

분명 사용자가 URL 창에 /domdomi URL로 요청을 했는데, 서버에서는 자동으로 이를 /domdomi/ 경로로 Redirection(리다이렉션) 시켜주는 모습을 볼 수 있습니다.

 

장고 개발 흐름 정리하기

1. 웹 브라우저 주소창에 http://localhost:8000/domdomi 입력 시 서버에서는 /domdomi/ 페이지를 요청합니다.

2. config/urls.py 파일에서 URL 패턴을 해석하여 /domdomi/ URL에 매핑되어 있는 domdomi/views.py 파일의 index 함수를 호출하여 줍니다.

3. index 함수에 정의되어 있는 HttpResponse 함수 호출한 결과를 사용자 브라우저에 반환하여 결과를 전달해줍니다.

728x90
반응형
댓글