機能的な検索バーを作るために継承されたコードの操作に問題があります。私はsearch_resultsページを適切に作成するのが最も困難でした。Django、機能的な検索バーと検索結果ページを作成
search_resultsページを1行だけ削除しました。 search_results.html:<div>You searched for {{ query }}</div>
現在、search_resultsページは{{query}}を表示しません。ユーザーが以前に入力したテキストは表示されません。そのページに表示されることすべてが、私は少し慎重になっていた
searchbox.html
<form class="search" action="{% url 'search' %}" method='post'>
{% csrf_token %}
<input type="search" placeholder="Search here..." name="usr_query"
value='{{ query }}' required>
<button type="submit">Search</button>
</form>
views.py
def search(request):
query = request.POST['usr_query']
print "QUERY: "
print query
t = loader.get_template('gtr_site/test_search_results.html')
c = Context({ 'query': query,})
return HttpResponse(t.render(c))
"あなたが探し" と追加されていること"print"ステートメントは、ユーザーが検索バーに入力した内容を表示します。しかし、それは私のsearch_resultsページで生成されていません。
これにはどのような理由がありますか?
編集:
追加urls.pyあなたがGETパラメータを表示することを強制されているvalue='{{ request.GET.usr_query }}'
今
value="{{ query }}"
に
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^about/$', views.about, name='about'),
url(r'^contact/$', views.contact, name='contact'),
url(r'^search_engine/$', views.statement_search_engine, name='statement-search') # <- url for searchbox.html,
url(r'^test_search_results/$', views.search, name='test-search'), # <- url for searchresults.
url(r'^(?P<statement_id>.+)/$', views.statement_page, name='statement'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
私はContext()関数を自分で使用しませんでしたが、それを調べて、正しく使用しているようでした。しかし、 '{{request.GET.usr_query}}'を '{{query}} 'に変更していないと、まだ動作していないことに注意してください。 – manassehkatz