[Django] 7. URL 네이밍하기

[Django] 7. URL 네이밍하기

반응형

URL 하드코딩을 없애보자.

그 전에 URL 하드코딩이란 뭘까?

우리가 만든 question_list.html에서 href태그를 한번 뜯어보자.

{{ question.subject }}

이런 형태의 URL로 구성했는데, 만약 서비스를 확장하면서 question.id 앞이나 뒤에 다른 구분자

예를들면 /pybo/2/question or /pybo/question/2/ 처럼 구조를 변경했다고 치자.

그렇게되면 템플릿에 사용된 모든 href태그들을 하나하나 수정해줘야한다. 이렇게 하드코딩된 URL을 보기 쉽게 바꿔주기 위해서

URL 별칭을 사용해야한다. 간단하게 생각하면 URL을 하나의 변수로 만들어 템플릿에서 사용할 수 있도록 하는과정이다.

pybo/urls.py 를 열어 수정하자.

from django.urls import path from . import views app_name = 'pybo' # pybo의 namespace urlpatterns = [ path('',views.index, name = 'index'), path('/', views.detail,name = 'detail'), ]

이렇게 수정해주면, /pybo/에는 index라는 이름이, /pybo/2/ 에는 detail이라는 이름이 부여됐다.

만약 index라는 이름이 여러개라면?

pybo 말고 notion이라는 서비스를 만들고, 그 서비스에도 index라는 이름을 가진 URL이 존재할 수 있다.

그럴 경우를 대비하여 app_name이라는 네임스페이스를 추가하면 어떤 서비스의 이름인지 명확해진다.

이제 href를 수정해주자.

question_list.html

{% if question_list %} {% for question in question_list %} {{ question.subject }} {% endfor %} {% else %} 질문이 없습니다. {% endif %}

템플릿에서 이동하는 주소는 pybo 서비스의 detail이라는 별칭을 찾아서 이동한다.

반응형

from http://kkiho.tistory.com/35 by ccl(A) rewrite - 2021-12-23 16:01:01