django rest api用于提前搜索

时间:2017-10-22 13:02:20

标签: python django rest django-rest-framework

我想用django rest框架创建一个api,它会进行一些预先搜索,比如说杂货项目列表保存在数据库中,用户想要创建一个杂货清单,他输入前2或3个字母然后我的api将进行查询以获取项目名称的其余部分,并建议用户

我看过drf haystack的文档,但不确定它是否符合我的要求。它也不支持django LTS版本1.11。

你可以给我一些建议吗? django rest框架本身是否提供任何支持来创建这样的api,这将是我在上面提到的such advance search?我只需要一些建议,因为我是django rest framework中的新手。

1 个答案:

答案 0 :(得分:0)

如果您想要搜索建议,可以使用jquery自动完成输入,并将其链接到生成杂货的视图,不需要使用rest-framework来完成这个简单的任务。

HTML代码:

<script>
$(function() {
   $("#your_input_id").autocomplete({
   source: "{% url 'url_name' %}",
   minLength: 2,
});
});

</script>

让我们创建视图:

import json # or simplejson
def get_grocery(request):
    if request.is_ajax():
        q = request.GET.get('term', '')
        places = Grocery.objects.filter(grocery_name__icontains=q)
        results = []
        for pl in places:
            place_json = {}
            place_json['id'] = pl.id
            place_json['label'] = pl.grocery_name
            place_json['value'] = pl.grocery_name
            results.append(place_json)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

最终网址:

url(r'^api/get_grocery/', views.get_grocery, name='url_name'),
  

不要忘记导入jquery

<!-- jQuery !-->
<link rel="stylesheet" href="http://code.jquery.com/ui/1.8.18/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">
</script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>