SBA - 장고 3.1

장고 3.1

SBA - 장고 3.1 장고 3.1
본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

URL의 namespace 정하기

URL의 namespace 정하기

튜토리얼의 프로젝트는 polls 라는 앱 하나만 가지고 진행했습니다. 실제 Django 프로젝트는 앱이 몇개라도 올 수 있습니다. Django는 이 앱들의 URL을 어떻게 구별해 낼까요? 예를 들어, polls 앱은 detail 이라는 뷰를 가지고 있고, 동일한 프로젝트에 블로그를 위한 앱이 있을 수 있습니다.

Django가 `{% url %}` 템플릿태그를 사용할때, 어떤 앱의 뷰에서 URL을 생성할지 알 수 있을까요?

정답은 `URLconf`에 `namespace` 을 추가하는 것입니다. `polls/urls.py` 파일에 app_name을 추가하여 여프리케이션의 이름공간을 설정 할 수 있습니다.

`polls/urls.py`

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:question_id>/', views.detail, name='detail'),
    path('<int:question_id>/results/', views.results, name='results'),
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

이제, `polls/index.html` 템플릿의 기존 내용을 namespace으로 나눠진 상세 뷸르 가리키도록 변경하세요.

`polls/urls.py`

<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>

<!-- tobe -->
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>

 

댓글

댓글 본문
graphittie 자세히 보기