on
[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