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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

927閲覧

djangoでsearchを行っても表示できない

bokunokaminoke

総合スコア10

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/01/16 16:35

base.htmlのところに検索バーを作成し、next_page1.htmlで表示させたいのですが、next_page1.htmlには飛んでいるのに検索結果が表示されません。どこが悪いのでしょうか。お願いします。

basehtml

1 2 <form action="" method="get"> 3 <form class="form-inline my-2 my-lg-0"> 4 <div class="ui action input" style="width: 100%;"> 5 <input type="text" placeholder="検索" value="{{query_params}}" name="q"> 6 <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> 7 </div> 8 </form> 9 </form>

urlspy

1urlpatterns = [ 2 re_path(r'^next_page1/$', views.IndexView.as_view(),name='next_page1'), 3 re_path(r'^base/$', views.IndexView.as_view(),name='base'), 4]

nextpage1

1{% for res in search_results %} 2 3 <div class="container"> 4 5 <div class="card-deck"> 6 <div class="card text-white bg-secondary mb-4"> 7 <div class="card-body"> 8 <xml id="toolbox"></xml> 9 <a class="card-title">{{res.subjectofmail}}</a> 10 <p class="card-text">{{res.mail_address}}</p> 11 <p class="card-text">{{res.date}}</p> 12 13 </div> 14 </div> 15 </div> 16 17</div> 18 19{% endfor %}

viewspy

1 2class IndexView(TemplateView): 3 template_name = 'next_page1.html' 4 5 6 7 def get_context_data(self, **kwargs): 8 context = super(IndexView, self).get_context_data(**kwargs) 9 10 if 'q' in self.request.GET: 11 12 13 query_params = self.request.GET.get('q') 14 context['query_params'] = query_params 15 16 17 self.template_name = 'next_page1.html' 18 19 q = Search.parse_search_params(query_params) 20 21 22 if q: 23 query = reduce(operator.and_, ( 24 Q(subjectofmail__contains=w) | Q(mail_address__contains=w) for w in q)) 25 search_result = information.objects.filter(query) 26 context['search_result'] = search_result 27 else: 28 return context 29

functionpy

1from typing import List 2 3 4# 検索フォーム 5class Search: 6 @staticmethod 7 def parse_search_params(words: str) -> List[str]: 8 search_words = words.replace(' ', ' ').split() 9 return search_words

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

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

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

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

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

tatamyiwathy

2020/01/18 06:09

「検索結果が表示されません」だけですと回答のしようがありません。 結果がないので表示されないのか、エラーが発生してエラーがないのか、まずどちらが原因かを切りわけられませんか?
bokunokaminoke

2020/01/19 00:38

ありがとうございます。移動させたいページには移動しているようなのですが、(エラーは起きていいない)。登録されているobjectに引っかかるように検索をかけているのにobjectが一つも表示されません。
guest

回答1

0

ベストアンサー

contextを返していないパスがあるのが原因ではないでしょうか。

python

1class IndexView(TemplateView): 2 template_name = 'next_page1.html' 3 4 5 6 def get_context_data(self, **kwargs): 7 context = super(IndexView, self).get_context_data(**kwargs) 8 9 if 'q' in self.request.GET: 10 11 12 query_params = self.request.GET.get('q') 13 context['query_params'] = query_params 14 15 16 self.template_name = 'next_page1.html' 17 18 q = Search.parse_search_params(query_params) 19 20 21 if q: 22 query = reduce(operator.and_, ( 23 Q(subjectofmail__contains=w) | Q(mail_address__contains=w) for w in q)) 24 search_result = information.objects.filter(query) 25 context['search_result'] = search_result 26 # ここでcontextを返していない 27 return context 28 else 29 return context

投稿2020/01/19 04:19

tatamyiwathy

総合スコア1039

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

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

bokunokaminoke

2020/01/19 13:46

とても単純なことでしたが全く気が付きませんでした。本当に助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問