Django에서 템플릿을 작성하다 보면
아래와 같은 문법을 자연스럽게 사용하게 된다.
{% url 'post-detail' post.id %}
처음에는 이 문법이 조금 낯설지만,
개념을 알고 나면 URL 관리와 유지보수가 훨씬 쉬워진다.
1. URL name이란?
Django에서는 URL 패턴에 이름(name) 을 붙일 수 있다.
# posts/urls.py
path('', views.post_list, name='post-list'),
path('<int:post_id>/', views.post_detail, name='post-detail'),
여기서 name='post-detail' 이 바로 URL의 별명이다.
실제 경로: /posts/2/ 와 별명: 'post-detail'
2. 왜 URL name을 쓰는가?
만약 템플릿에서 URL을 직접 쓰면:
<a href="/posts/2/">글 제목</a>
나중에 URL 구조가 바뀌면 모든 템플릿을 수정해야 한다.
하지만 name을 사용하면:
<a href="{% url 'post-detail' post.id %}">
URL 구조가 바뀌어도 urls.py만 수정하면 됨 ( 유지보수성이 훨씬 좋아진다.)
3. {% url %} 템플릿 태그란?
{% url %} 은 URL name을 실제 URL 문자열로 변환해주는 템플릿 태그다.
{% url 'post-detail' post.id %}
이건 Django에게 이렇게 말하는 것과 같다.
“post-detail 이라는 이름의 URL에
post.id 값을 넣어서
실제 URL을 만들어줘”
4. 인자가 있는 URL의 경우
path('<int:post_id>/', views.post_detail, name='post-detail')
이 URL은 post_id 값을 반드시 필요로 한다.
그래서 템플릿에서는:
{% url 'post-detail' post.id %}
처럼 인자를 함께 전달해야 한다.
5. 정리하면
- name은 URL의 별명
- {% url %} 은 그 별명을 실제 URL로 변환
- 템플릿에서는 하드코딩된 URL을 쓰지 않는 게 정석
- URL 변경에 강한 구조를 만들 수 있다
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| Django Form Method POST 처리 흐름 정리 (0) | 2026.01.10 |
|---|---|
| Django Form으로 입력 폼 빠르게 만들기 (0) | 2026.01.10 |
| [트러블슈팅] Django URL 404 에러를 통해 배운 것 - URL Converter 공백 처리 (0) | 2026.01.10 |
| Django Model API란? (0) | 2026.01.10 |
| [Model] 하드 코딩을 피하고, Django답게 화면 만들기 (0) | 2026.01.04 |