前提・実現したいこと
DjangoでWebアプリケーション作成をしています。
HTMLでリストの絞り込みをしたいのですが、なかなかシンプルな実装が見つからなくて困っています。
検索機能は調べながらできたのですが、並べ替えのためのボタンにはどのようにGETメソッドに値を渡すのかが分かりません。個人的にJavaScriptは使いたくないので、Django側だけで処理したいです。
何か良い方法があれば教えてください。
追記:
質問が分かりにくかったようなので詳しく説明します。
現状検索フォームに文字(例:"hoge")をを入力すると、urlに?query="hoge"などと追加されて、それをViewで処理しています。これを複数のボタンでも行いたくて、ボタン1を押したときは、?value="1"、ボタン2を押したときは?value="2"、...となるようにしたいです。
これをJavaScriptを使わずに実装する方法はあるでしょうか。
該当のソースコード
HTML
1<div class="row"> 2 <div class="col-md-3 mb-2"> 3 <div class="card"> 4 <div class="card-header" role="tab" id="collapseListGroupHeading1"> 5 <h6 class="mb-0"> 6 <a href="#collapseListGroup1" class="collapsed text-body d-block p-3 m-n3" role="button" data-toggle="collapse" 7 aria-expanded="false" aria-controls="collapseListGroup1">絞り込み</a> 8 </h6> 9 </div> 10 <div class="collapse" role="tabpanel" id="collapseListGroup1" aria-labelledby="collapseListGroupHeading1" aria-expanded="false"> 11 <form class="mt-2 ml-2 mb-2" action="" method="GET"> 12 <!------ココ--------> 13 <p>並び替え</p> 14 <div class="btn-group-vertical btn-group-sm col-xs-12"> 15 <button type="button" class="btn btn-default active">新着順</button> 16 <button type="button" class="btn btn-default">人気順</button> 17 <button type="button" class="btn btn-default">終了順</button> 18 </div> 19 <!------------------> 20 <hr> 21 <p>検索</p> 22 <input type="text" class="form-group" name="query" value="{{ request.GET.query }}"></br> 23 24 <button type="submit" class="btn btn-primary btn-sm">検索</button> 25 <a class="btn btn-default btn-sm" href="/polls/votes">リセット</a> 26 </form> 27 </div> 28 </div> 29 </div> 30 31 <div class="col-md-9"> 32 <div class="table-responsive"> 33 <table class="table table-striped table-sm"> 34 {% for question in question_list %} 35 {% include 'includes/votes_list.html' %} 36 {% empty %} 37 <p>質問はありません</p> 38 {% endfor %} 39 </table> 40 {% include 'includes/page.html' %} 41 </div> 42 </div> 43</div>
Python
1class VoteView(generic.ListView): 2 template_name = "polls/votes/index.html" 3 context_object_name = "question_list" 4 paginate_by = 10 5 6 def get_queryset(self): 7 q_word = self.request.GET.get('query') 8 if q_word: 9 question_list = Question.objects.filter( 10 Q(question_text__icontains=q_word), close_date__gte=timezone.now()) 11 else: 12 question_list = Question.objects.filter(close_date__gte=timezone.now()) 13 return question_list
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/15 01:30