[Django] 기본 구조 - URL과 네임스페이스

haejun-kim·2020년 7월 6일
1

[Django]

목록 보기
6/20
post-thumbnail

현재와 같이 url을 지정할 경우 페이지의 갯수가 많아지는경우 url 규칙이 변경 될 경우 일일이 찾아가서 변경해주어야하는 번거로움이 발생한다. 그런 비효율적인 부분을 해결하기위해 우리는 url 별칭을 사용할 것이다.

URL 별칭

/review/urls.py 로 가서 pathname이라는 속성을 부여해서 별칭을 설정한다.

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

템플릿에서 URL 별칭 사용

URL 별칭을 설정했기 때문에 URL 별칭을 템플릿과 연결시켜주어야 한다.
/question_list.html에서 아랫부분을 변경해준다.

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

URL 네임스페이스

마지막으로 한번 더 고려해야할 점은, app이 많아질경우 URL의 별칭이 겹치는 문제가 발생할 수 있어 한번 더 구분지어줄 필요가 있다.
review/urls.py에서 아래와같이 app_name을 설정해준다.

app_name = "review"

별칭을 설정했을때와 마찬가지로 템플릿으로 넘어가서 수정해준다.

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

URL 별칭을 사용하여 URL 매핑 규칙은 바꼈지만, 실제 구동시켜보면 결과는 같은것을 알 수 있다. 여러 앱을 다룰 경우를 대비해서 처음부터 이런식으로 코딩하는 연습을 해야겠다.

2개의 댓글

comment-user-thumbnail
2020년 12월 31일

잘 읽고 있는 와중에... 갑자기 question_list.html 이 나오네요.
html 페이지를 어떻게 구성할지는 알겠습니다.

1개의 답글