【问题标题】:Django search as input is entered into form将 Django 搜索作为输入输入到表单中
【发布时间】:2016-09-09 01:01:25
【问题描述】:

我目前在我的项目中有一个有效的搜索表单,它将表单数据传递给 GET 请求。很标准。 我想要做的是在将数据输入搜索表单时进行搜索,以便结果将与搜索数据一起实时显示。这很像谷歌对即时桌面结果所做的事情。 Django可以做到这一点吗? 以下是我当前的(简单)搜索

#views.py
def ProductView(request):
title = 'Products'
all_products = Product.objects.all().order_by("product_Name")
query = request.GET.get("q")
if query:
    products = all_products.filter(
        Q(product_Name__contains=query) |
        Q(manufacturer__contains=query)
    ).distinct()
    return render(request, 'mycollection/details.html', { 'all_products' : products })

-

<!-- HTML -->
    <!-- SEARCH BAR -->
<form class="navbar-form navbar-left" role="search" method="get" action="{% url 'mycollection:products' %}">
    <div class="form-group">
        <input type="text" class="form-control" name="q" value="{{ request.GET.q }}">
    </div>
    <button type="submit" class="btn btn-default">Search</button>
</form>

【问题讨论】:

  • “实时显示”是指用户输入时(即在发送 GET 请求之前?)
  • 这当然是可能的。但是,对我来说,解决方案听起来更像是一个 Javascript 问题。您需要有一个有效的 Javascript 实用程序,该实用程序可以对端点进行 Ajax 调用,该端点返回(例如)带有搜索结果的 json 对象,然后 Javascript 返回到浏览器。问题是“如何”是一个非常复杂的答案,它高度依赖于您网站的前端架构。
  • 是的,denvaar,我希望在没有 GET 请求的情况下执行此操作。酒仙,我不太热衷于 Javascript,但我需要更多地参与其中。您是否有一个示例实现您所指的内容,我可以尝试根据我的需求进行定制?

标签: python django search


【解决方案1】:

您可以将 request.data 保存到会话中,如果有任何数据与会话搜索数据相关联,您可以将其放入搜索框的值中。

request.session['search'] = request.GET.get('q','')

完整的:

{% if request.session.search %} {{request.session.search}} {% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多