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

 

 

반응형