【问题标题】:How to pass search input value in output如何在输出中传递搜索输入值
【发布时间】:2021-12-30 21:31:35
【问题描述】:

我有一个搜索栏,可以呈现用户要查找的元素列表。我想将输入值传递给输出 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

<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>

【问题讨论】:

  • 你能分享你的模型吗?您的查询似乎有问题。

标签: python django search


【解决方案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 %}
<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 %}

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 2015-12-09
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多