Python/Django

장고 걸즈 튜토리얼 따라하기 6 - 장고 urls

bug_maker 2018. 12. 24. 21:36
장고 걸즈 튜토리얼 따라하기 6 - 장고 urls

URL이란?

URL은 웹 주소이다. 인터넷의 모든 페이지는 고유한 URL을 가지고 있어야 하고, 어플리케이션은 사용자가 URL을 입력하면 알고 있어야 한다. 장고는 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합인 URLconf (URL configuration)을 사용한다.

 

장고 URL 작동 방식

에디터에서 mysite/urls.py 파일을 열면 아래 내용이 보인다.

여기서 아래 부분을 보면

장고는 admin/로 시작하는 모든 URL을 뷰와 대조해 찾아낸다. 무수히 많은 URL을 모두 쓸 수는 없기 때문에 정규표현식을 쓴다.

정규표현식(Regex)

장고는 정규표현식(regular expressions)의 줄임말인 regex를 사용한다. URL 패턴을 만들기 위해서 사용하는 몇 가지 규칙이 있다.

  • ^ : 문자열이 시작할 때
  • $ : 문자열이 끝날 때
  • \d : 숫자
  • () : 패턴의 부분을 저장할 때

http://www.mysite.com/post/12345/ 라는 사이트가 있다고 가정하면 여기서 12345는 글 번호를 의미한다.

뷰마다 모든 글 번호를 매기기는 힘들기 때문에 정규표현식으로 ^post/(\d+)/$ 라는 url 패턴을 만든다. 하나하나 자세히 살펴보면

  • ^post/ : url이 post/로 시작한다.
  • (\d+) : 숫자가 한 개 이상 있다. 이 숫자로 조회하고 싶은 게시글을 찾을 수 있다.
  • / : / 뒤에 문자가 있다.
  • $ : 마지막이 /로 끝난다.

 

첫 번째 Django URL

http://127.0.0.1:8000/ 를 홈페이지 주소로 만들어 글 목록을 보이게 만들 것이다.

mysite/urls.py 파일을 깨끗한 상태로 유지하기 위해서, blog 어플리케이션에서 메인 mysite/urls.py 파일로 url들을 가져올 것이다.

먼저 주석을 삭제하고 django.conf.urls에서 include를 import 해서 blog.urls를 가져오는 행을 추가한다.

이렇게 하면 장고는 http://127.0.0.1:8000/ 로 들어오는 모든 접속 요청을 blog.urls로 전송한다.

 

blog.urls

blog/urls.py 라는 새 파일을 생성하고 다음 코드를 추가한다.

장고의 메소드와 blog 어플리케이션에서 사용할 모든 views를 불러오고 있다.

그 다음, 첫 번째 URL 패턴을 만든다.

이제 post_list라는 이름의 view가 빈 URL에 할당되었다. 이렇게 되면 http://127.0.0.1:8000/ 주소로 들어왔을 때 views.post_list를 보여주게 된다. 그리고 마지막의 name='post_list'는 URL에 이름을 붙인 것으로 뷰를 식별하게 된다.

서버를 실행하고 http://127.0.0.1:8000/ 로 접속해보면 AttributeError가 발생하는데 이것은 post_list라는 뷰가 아직 없기 때문에 발생하는 현상이다.