Django - Routing

고건·2023년 5월 23일
0

Django

목록 보기
3/10
post-custom-banner

어떤 웹 프레임워크를 사용하건 가장 먼저 하는 작업이 routing이다.
routing은 경로라는 뜻이다!

웹 애플리케이션에서 경로라는 것은 사용자가 접속한 각각의 경로를 누가 처리할 것인가를 지정하는 것을 routing이라고 한다.
어떤 프레임워크를 쓰건 간에 가장 먼저 따져봐야할 것은 routing이고 routing이 반이라고 해도 과언이 아니다.

장고에서는 프로젝트 폴더 안에 있는 urls.py가 가장 큰 틀의 routing을 하고, 이것을 적당한 app으로 위임을 해주면 이 app이 views.py 안에 있는 특정 함수로 위임을 해서 그 함수가 이 작업을 처리하게 된다.

우선 myproject 안에 있는 urls.py에 들어와 주석으로 페이지의 홈, app, create, read로 연결되는 주소를 쓰고 각각의 주소로 접속했을때 어떻게 해야하는지 routing을 해주는 작업을 해보려한다.

제일 먼저 따져봐야할 것은 여러 약속을 지키는 것이다.
25번째 줄에 보이는 urlpatterns라는 리스트는 반드시 정의해야한다.
그리고 이 리스트 안에는 routing과 관련된 정보가 적혀있어야한다.
기본적으로 admin/가 적혀있는데 이 admin은 장고가 기본적으로 가지고 있는 관리자 화면으로 이동하기 위한 routing 설정이라고 할 수 있다.
( 아 점점 이해된다... 장고 프로젝트 주소 뒤에 /admin하면 관리자 페이지로 넘어가는게 이런 이유였구나...)

자, 이제 19번째 줄의 주소에 접속했을때 이 접속을 myapp에 있는 views.py로 위임을 해보려한다.

여기를 보면 설명이 나와있는데, including another URLconf 부분을 보면 현재 urls.py가 아닌 다른 폴더의 urls.py로 위임을 하려면 어떻게 해야하는지 보여주고 있다.

그리고 설명대로 include를 import해주고 urlpatterns에 path를 적어준 뒤 include의 첫번째 인자로는 내가 위임하려고 하는 app (현재는 myapp이라는 app으로 위임하려고 함) 의 이름을 적어주고 .urls를 붙여줘 해당 app 아래에 있는 urls.py를 사용하라고 지정했다.

그 후 추가로 현재 myapp 폴더에는 urls.py가 존재하지 않기 때문에 myproject에 존재하는 urls.py를 복사해 myapp 폴더에 붙여넣기 후 필요없는 내용들을 모두 날려줬다.

이렇게 되면 사용자가 접속했을때 admin이 아닌 다른 경로로 접속을 하면 그 접속을 myapp에 있는 urls로 위임을 하게 된거다.

만약 사용자가 app이라고 하는 경로로 접속했을때 내가 myapp으로 위임하고 싶다면 이렇게 괄호에 원하는 경로를 지정해주면 된다.
그 다음으로는 app의 urls.py 파일에서 경로를 처리해줘야한다.

이렇게 app 안에 있는 urls.py에 경로를 지정해줬고, 들어오게 된 경로에 따라 그것을 views.py로 전달하려면 어떻게 해야할까?

views.py에다가 클라이언트로 정보를 전송하기 위한 역할을 할 index라는 이름의 함수를 정의했다.
이 함수는 첫번째 파라미터의 인자로 요청과 관련된 여러가지 정보가 들어오도록 약속되어있는 객체를 전달해주도록 되어있어 request라는 이름의 파라미터를 넣어줬다.
그리고 처리한 결과를 클라이언트로 보내줄 때 return 값으로 보내주는데, Https를 이용해 응답을 하겠다는 의미에서 HttpsResponse라고 하는 객체를 이용했다. (이걸 사용하기 위해서 위에 import를 해줬다.
그리고 이 HttpsResponse의 인자로 전송하고 싶은 값을 적어주면 된다.

그러면 이제 사용자가 경로를 지정하지 않고 접속했을때 index라는 함수로 위임하기 위해서는 어떻게 해야할까?

다시 app의 urls.py로 돌아가, myapp이라는 폴더 안의 view를 가져온다는 뜻으로 from과 import를 사용해 views.py를 불러왔다.
그리고 아무 경로를 지정하지 않은 채 접속했을 시에 views.py 안의 index 함수를 참고해 처리하라고 두번째 파라미터에 지정을 해줬다.

그러고나서 아무런 경로를 지정하지 않은 채 서버를 켜고 접속해보면 views.py의 index 함수에 지정한대로 Welcome 이라는 문구가 잘 뜬다!

그 다음으로는 app, create, read 라는 경로로 접속했을때도 위임을 해줬는데 그냥 위의 방법과 똑같지만 함수의 이름과 전달해주는 내용을 바꾸고 myapp의 urls.py에서 각각 맞는 함수와 연결해줬다.

1. myproject urls.py 에서 path 지정
2. myapp views.py에서 함수 설정
3. myapp urls.py에서 path 설정 및 view 파일 함수 연결



post-custom-banner

0개의 댓글