Как передать значение ввода поиска в вывод

#python #django #search

Вопрос:

У меня есть строка поиска, которая отображает список элементов, которые пользователь должен найти. Я хотел бы передать входное значение для вывода html, поэтому, если пользователь ищет статью 1, я хочу отобразить над списком имя запроса. Я пытался задать запрос, поиск, но это не работает.

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

 lt;form action="{% url 'search_qa_results' %}" method="get" id="search"gt;  {% csrf_token %}  lt;div class="searchbar" id="autocomplete"gt;  lt;input name="q" type="text" placeholder="Type your question" class="search_input"gt;  lt;a href="{% url 'search_qa_results' %}" class="search_icon"gt;lt;i class="fas fa-search"gt;lt;/igt;lt;/agt;  lt;ul class="autocomplete-result-list"gt;lt;/ulgt;  lt;/divgt; lt;/formgt;  

search_results.html

 {% extends 'base.html' %} lt;titlegt;{% block title %}Qamp;A results{% endblock %}lt;/titlegt;  {% block content %} lt;link rel="stylesheet" type="text/css" href="/static/search_qa.css"gt; lt;div class="d-flex justify-content-start"gt; Search results for my question: {{WHAT TO PUT HERE?}}lt;/divgt; lt;div class="container h-100 pb-4"gt;  lt;div class="d-flex justify-content-end h-100 pb-4"gt;   {% for qa in qa_list %}  lt;div class="card text-dark bg-light mb-3 text-left"gt;  lt;a href="{{ qa.get_absolute_url }}"gt;  lt;h5 class="card-header"gt;Q: {{qa.title}}lt;/h5gt;  lt;div class="card-body"gt;  lt;div class="card-title text-justify"gt;A: {{ qa.answer }}lt;/divgt;  lt;/divgt;  lt;div class="card-footer"gt;  lt;small class="text-muted"gt;Published: {{qa.publish}}lt;/smallgt;  lt;/divgt;  lt;/agt;  lt;/divgt;  {% empty %}  lt;pgt;No resultslt;/pgt;  {% endfor %} lt;/divgt;  

Комментарии:

1. Не могли бы вы поделиться своими моделями? Похоже, с вашими запросами что-то не так.

Ответ №1:

Если вы хотите отобразить только имя запроса, вам просто нужно добавить его в контекст :

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 %} lt;div class="d-flex justify-content-start"gt; Search results for {{ query_name }}lt;/divgt; {% else %} lt;div class="d-flex justify-content-start"gt; Please enter something in the search barlt;/divgt; {% endif %}