Как передать входное значение поиска в вывод
У меня есть строка поиска, которая выводит список элементов, которые пользователь хочет найти. Я хочу передать входное значение в выходной html, так что если пользователь ищет статью 1, то я хочу отобразить над списком имя запроса. Я пытался вывести query, lookup, но это не работает.
views.py
def search_qa_results(request):
query = request.GET.get('q')
qa_list = QA.objects.filter(title__icontains=query)
if query is not None:
lookups = Q(title__icontains=query)
qa_list = QA.objects.filter(lookups)
context = {
'qa_list': qa_list
}
return render(request, 'search/search_qa.html', context)
index.html
<form action="{% url 'search_qa_results' %}" method="get" id="search">
{% csrf_token %}
<div class="searchbar" id="autocomplete">
<input name="q" type="text" placeholder="Type your question" class="search_input">
<a href="{% url 'search_qa_results' %}" class="search_icon"><i class="fas fa-search"></i></a>
<ul class="autocomplete-result-list"></ul>
</div>
</form>
search_results.html
{% extends 'base.html' %}
<title>{% block title %}Q&A results{% endblock %}</title>
{% block content %}
<link rel="stylesheet" type="text/css" href="/static/search_qa.css">
<div class="d-flex justify-content-start"> Search results for my question: {{WHAT TO PUT HERE?}}</div>
<div class="container h-100 pb-4">
<div class="d-flex justify-content-end h-100 pb-4">
{% for qa in qa_list %}
<div class="card text-dark bg-light mb-3 text-left">
<a href="{{ qa.get_absolute_url }}">
<h5 class="card-header">Q: {{qa.title}}</h5>
<div class="card-body">
<div class="card-title text-justify">A: {{ qa.answer }}</div>
</div>
<div class="card-footer">
<small class="text-muted">Published: {{qa.publish}}</small>
</div>
</a>
</div>
{% empty %}
<p>No results</p>
{% endfor %}
</div>
Если вы хотите отображать только имя запроса, вам просто нужно добавить его в контекст :
views.py
def search_qa_results(request):
context = {}
query = request.GET.get('q', None)
if query:
lookups = Q(title__icontains=query)
qa_list = QA.objects.filter(lookups)
context = {
'qa_list': qa_list,
'query_name': query
}
else:
# Return all the objects as default if query name is empty
context = {
'qa_list': QA.objects.all()
}
return render(request, 'search/search_qa.html', context)
search_qa.html
{% if query_name %}
<div class="d-flex justify-content-start"> Search results for {{ query_name }}</div>
{% else %}
<div class="d-flex justify-content-start"> Please enter something in the search bar</div>
{% endif %}