URL 이름공간 분리하기
이번 튜토리얼은, polls 앱 하나 밖에 없습니다.
하지만, 실제 Django 프로젝트에서는, 프로젝트에서 사용되는 앱의 갯수가, 5개, 10개, 20개 혹은 그 이상이 될수 있습니다.
그렇다면, Django 는 URL 이름들을 어떻게 구분해야 할까요?
예를들어,
polls 앱은 detail view 를 가지고 있습니다.
하지만, polls 앱 외에 다른 앱인 blog 앱이 존재한다고 가정할때,
그 앱도 detail view 를 가지고 있을수 있습니다.
1 | 그렇다면, {% url %} 태그안에서 어떻게 이 두가지의 detail view 를 구분할까요? |
URLConf 에 이름공간 추가하기
정답은, URLConf 에 이름공간들을 추가해 주는것입니다.
polls/urls.py 파일로 가서, app_name 을 추가해 줍니다.
1 | from django.urls import path |
URLConf 에 추가된 Namesapce 사용
polls/index.html 템플릿은 아래와 같이 작성되어 있습니다. (지난 포스팅)
1 | {% if latest_question_list %} |
바뀐 namespace 를 적용하고, a 태그가 정확하게 polls 에 있는 detail 뷰를 가르키게 하려면,
아래와 같이 a 태그를 수정해 줍니다.
1 | <li><a href="{% url 'polls:detail' question.id %}"> |
1 | {% url %} 태그안에, |
마치며..
polls 앱 말고, 다른 앱이 존재 한다면, namespace 를 분리하기 위해서, 아래 절차를 따르면 됩니다.
해당 엡의 urls.py 에 app_name 을 지정
템플릿에서
1
2
3{% url %} 태그안에 '앱이름:url명' 으로 url 연결
e.g. {% url 'polls:detail' question.id %}
뷰를 작성하는것이 편해졌다면, 이제 튜토리얼의 part 4 로 넘어갑니다.
part4 는, form 프로세싱과 generic 뷰에 대한 기본을 다룹니다.