質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

1回答

3631閲覧

HTMLとDjangoだけで絞り込み機能

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2020/04/14 06:26

編集2020/04/14 13:32

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のようにするのはどうでしょうか?

html

1<button type="submit" class="btn btn-default" name="action" value="new">新着順</button> 2<button type="submit" class="btn btn-default" name="action" value="popularity">人気順</button> 3<button type="submit" class="btn btn-default" name="action" value="close">終了順</button>

投稿2020/04/15 00:11

hasami

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/15 01:30

ありがとうございます。上手くいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問