학습주제
Django App 생성하기
학습내용
프로젝트=하나의 웹사이트
프로그래머스 -> 커뮤니티. 커뮤니티가 하나의 사이트를 구성하는 앱
프로그래머스 -> 홈, 스쿨, 커리어, 커뮤니티
하나의 프로젝트는 여러개 앱으로 구성
앱은 하나의 프로젝트에만 속하는 것은 아님. 다른 프로젝트에서도 동작할 수 있음
현재 동작하고 있는 서버를 컨트롤 Break(키보드 우상단)을 눌러 종료시킴.
이제 터미널에 앱을 생성하는 명령어를 입력
python manage.py startapp polls
아무 응답이 없으면 성공
웹서버가 하는 일
프로그래머스 웹서버는
이러한 url 요청이 들어왔을 때, 이 페이지를 내려서 그려주게 됨. 그려주는 역할을 브라우저가 하고 내리는 것은 프로그래머스 서버가 함.
예를들어, 웹서버가 알지 못하는 url을 입력하게 되면,
이러한 반응을 보인다. 마찬가지로 우리가 생성한 서버에서도 뒤에 some_page를 붙일 경우 연결할 수 없다는 창이 뜬다.
그 이유는 현재 서버가 꺼져있기 때문이다. 다시 cmd에서 서버를 실행시켜 준다.
python manage.py runserver
서버가 활성화 된 상황에서. some_page를 입력하면, 다른 에러메세지가 출력된다. 이러한 에러메세지를 꼼꼼히 읽는 것을 추천한다. 그러다보면 오류가 왜 일어나는지 알게 된다.
요청된 url을 mysite.urls에서 찾아봤는데 못찾았다. 그렇다면, mysite.url에 넣어주면 해결되지 않을까?
vs code로 넘어가서,
mysite -> urls.py로 가면
이렇게 urls가 정의되어 있다.
우리는 앱을 만드는 과정이므로, 생성한 polls에 urls.py라고 생성. 그 후 복사했던 내용을 그대로 붙여넣기 함.
urlpatterns 리스트 안에 들어있는 path는 'admin/'이라는 url이 들어오면 뒤의 주소로 연결해라. 우리는 여기에 url이 비어서 들어오면(도메인을 찍고 그 뒤에 아무것도 적지 않음. 예를들어 programmers.co.kr/라고 하면 여기까지만 쓰고 뒤에 아무것도 적지 않음)
urls.py 내의 흐름을 보면,
from django.urls에서 path를 불러들임. path를 정의함. 정의된 path는 polls 내에 있음. polls 내 url이 mysite 프로젝트에서 돌아가도록 설정하지 않았음. 따라서 mysite의 urls.py에 들어가서, urlpatterns에 path('polls/', include('polls.urls')),
를 넣어줌.
include
를 쓰려면 정의를 해줘야 함. from django.urls import path, include
로 include로 불러와주면 메서드를 인식함.
mysite 내의 urls에 입력한 뜻은,
urlpatterns에서 url 뒤에 polls/가 들어오면, 그 뒤에 부분에 대한 처리는 polls.urls
에서 알아서 처리해라. 라는 뜻.
다시 polls의 urls.py로 넘어가면, 아무것도 안들어오면 view.index에서 처리해라 라는 뜻.
views.py로 넘어간다.
다음과 같이 입력해준다. 코드의 뜻은,
처음 mysite의 urls에서 path('polls/', include('polls.urls'))
에서 polls.urls
에서 처리토록 한다. 이에 polls의 urls로 가면 path('', views.index, name='index')
polls로 들어왔을 때 아무것도 안들어있으면 그 처리를 view.index로 가게끔 했다. 현재 view도 밑줄처리가 되어있는데(인식을 못하는 중)
현재 앱에서 views를 가져와라 라는 뜻. -> polls 내 views에 접근함.
ctrl를 누르고 views를 클릭하면 터미널로 넘어가는데, 특별한 것은 없어보인다. 장고 서버의 경우 파일을 수정할 때마다 바로 반영됨. (전체 저장해야함)
만일 views를 지워보면 바로 터미널에 에러가 반영되는 것을 확인.
vs code에서 저장하고, 터미널로가서 엔터를 치면 바로 반영.
마지막으로 브라우저로 넘어가서, 메인주소 뒤에 polls만 입력하고 그 뒤에는 아무것도 입력하지 않는다면 다음과 같은 결과 화면을 볼 수 있다.
지금까지 앱을 추가하고, 앱에 urls를 등록하고, main에서 그 url에 접근했을 때 어떤 결과를 도출하는지 작성해 보았다.