悩み
以下のようなタブ切り替えをしたいときに、
パスではなくてクエリパラメータで内容を変えたい。
(urls.pyの内容を変えたくない)
<ul class="nav nav-tabs"> <li class="nav-item"> <a href="{% url 'accounts:list' public%}">公開済み</a> </li> <li class="nav-item"> <a href="{% url 'accounts:list' draft%}">下書き</a> </li> <li class="nav-item"> <a href="{% url 'accounts:list' all%}">すべて</a> </li> </ul>
これだとurls.pyを
path('list/<slug>', views.ListlView.as_view(), name='list'),
みたに変更しなくてはならない。
そうはしたくない・・・。
解決策
話は簡単だった。
単純にurlの後ろにクエリパラメータとしてつけてやればいいだけ。
<ul class="nav nav-tabs"> <li class="nav-item"> <a href="{% url 'accounts:list' %}?public">公開済み</a> </li> <li class="nav-item"> <a href="{% url 'accounts:list' %}?draft">下書き</a> </li> <li class="nav-item"> <a href="{% url 'accounts:list' %}?all">すべて</a> </li> </ul>