Python/Django Framework
[Python Django] Template에서 파일명에 따라 ACTIVE 처리하기, resolver_match
Jake the Dog
2022. 4. 6. 13:09
반응형
Django Template를 이용하여 메뉴를 구성하고자 할때, 현재 페이지의 URL을 확인해야할때가 있습니다. 특히 LNB나 GNB 메뉴를 구성할 때 사용되는 경우가 많습니다. view 파일에서 context에 현재 페이지에 대한 정보를 주는 방법도 있겠으나, 현재 페이지의 url_name을 가져와 판단하는 것이 가장 효과적이라고 볼 수 있겠습니다.
urls.py 세팅
- url 패턴의 path에 name을 설정해줍니다.
# urls.py
urlpatterns = [
path('manage/', ManageView.as_view(), name='manage'),
path('create/', BlogCreateView.as_view(), name='create'),
path('update/<str:pk>', BlogUpdateView.as_view(), name='update'),
path('<str:pk>/dashboard/', DashboardView.as_view(), name='dashboard')
]
Template 세팅
- request.resolver_match.url_name은 url 패턴에 등록된 name값을 가지고 옵니다.
<a class="nav-link {% if request.resolver_match.url_name == "dashboard" %}active{% endif %}" href="javascript:">
resolver_match
request.resolver_match.url_name
# => 현재 페이지 url이 가지고 있는 name을 반환한다
# ex) dashboard
request.resolver_match.view_name
# => 현제 페이지 url의 namespace:name을 반환한다
# ex) blog:dashboard
반응형