【问题标题】:Ajax search form djangoAjax 搜索表单 django
【发布时间】:2023-11-09 13:19:01
【问题描述】:

正在尝试创建一个搜索表单。目前为此目的使用 ajax 自动完成功能。

  <div  class="ui-widget">
   <label for="search">Search for friends: </label>
   <input id="search">
 </div>



   $(function() {
  $("#search").autocomplete({
    source: "/accounts/ajax/search/",
    minLength: 2,
    select: function( event, ui )
  });
});

以下是处理我的 ajax 请求的视图。

 def get_ajax_search(request):
    query = request.GET.get('term', '')
    print(query)
    if request.is_ajax():
        qs1 = BasicUser.objects.filter(Q(first_name__icontains=query)) 
        results = []
        for user in qs1:
            basic_user_json = {}
            basic_user_json['id'] = user.pk
            basic_user_json['label'] = user.first_name+" "+  user.last_name
            basic_user_json['value'] = user.first_name+" "+  user.last_name
            results.append(basic_user_json)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

感谢您对几个问题的帮助:

  1. 如何在选择结果时重定向到其他页面。
  2. 如何在每个搜索结果旁边显示用户个人资料图片

【问题讨论】:

  • 嗨,肯,不要在这样的一个帖子上写多个问题。写一个明确的问题,可以用一个答案来回答。如果您有多个问题,请写多个帖子。
  • 正如@jonasfh 所说,您可能希望至少删除问题 3,因为在这里要处理很多事情,甚至要正确询问。
  • 第一次发布堆栈溢出。会努力改进我的问题!

标签: javascript ajax django autocomplete


【解决方案1】:
  1. 如何在选择结果时重定向到不同的页面。 试试下面的例子:

这里是一个笨蛋https://plnkr.co/edit/MieqYB6K7inzPVBiinDZ?p=preview

$("#search").autocomplete({
    source: "/accounts/ajax/search/",
    minLength: 2,
    select: function( event, ui ) {

        window.open('http://example.com/'+ui.item.value, '_blank')
    }
  });
  1. 如何在每个搜索结果旁边显示用户个人资料图片最重要的是

你可以关注

jquery autocomplete display custom result

  1. 是否有更好的方法从数据库中检索数据并将其发送到 ajax 函数,假设它将是一个高负载的网站。我们将不胜感激任何想法或见解。

这是非常主观的。您将不得不定义“更好”。 我建议根据 SO 问题使用 HTML 图像源,以便至少检索这些图像是异步的,否则您的服务器调用将需要很长时间才能检索每个项目的内联图像数据。

【讨论】: