【问题标题】:(Django )Django Restful Framework autocomplete search bar(Django)Django Restful Framework 自动完成搜索栏
【发布时间】:2017-10-07 12:38:47
【问题描述】:

我正在尝试基于 rest 框架 API JSON 文件创建一个简单的 HTML 搜索输入。到目前为止,我设法从 JSON 文件中获取数据。在控制台日志中,我想要的数据在那里,但是当我在搜索字段中搜索它时,它给了我这个错误:

GET http://127.0.0.1:8000/nameList?term=a 404 (Not Found)

我尝试将其转换为字符串,但仍然没有什么不同。

这是我的代码: HTML

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>

</head>
<body>
<br>
<input id="name_search_tags" type="text" placeholder="Search...">
</body>
<script>
    $.getJSON("list/?format=json", function (json) {
    console.log(json);

    $.each(json, function(key, val) {
        var nameList = [];
        var employee_name = val.employee_name;
        nameList.push(employee_name.toUpperCase());
        var string = nameList.toString();
        console.log(employee_name);
        console.log(nameList);
    });
    $("#name_search_tags").autocomplete({source: 'nameList'});
});
</script>
</html>

模型.py

from django.db import models

# Create your models here.


class MyModel(models.Model):
    employee_name = models.CharField(max_length=100)

    def __str__(self):
        return self.employee_name

serializer.py

from  rest_framework import serializers
from .models import *


class MyModelSerializer(serializers.ModelSerializer):

    class Meta:
        model = MyModel
        #fields = ('field 1','field 2')
        fields = '__all__'

view.py

from django.shortcuts import render
from .models import *
from .forms import *
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .serializers import *


    class MyModelList(APIView):
        def get(self, request):
                        #get all objects in model
            modelList = MyModel.objects.all()
            #convert to JSON                          #multiple objects in model
            serializers = MyModelSerializer(modelList, many=True)
            #return the serialize JSON data
            return Response(serializers.data)

url.py

from django.conf.urls import url
from django.contrib import admin
from search.views import *
from rest_framework.urlpatterns import format_suffix_patterns


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', search, name='search'),
    url(r'^list/', MyModelList.as_view(), name='list_view'),
]

urlpatterns = format_suffix_patterns(urlpatterns)

JSON

[
    {
        "id": 1,
        "employee_name": "Rajiv"
    },
    {
        "id": 2,
        "employee_name": "Izzat"
    },
    {
        "id": 3,
        "employee_name": "Nagendra"
    },
    {
        "id": 4,
        "employee_name": "Shawn"
    },
    {
        "id": 5,
        "employee_name": "Jason"
    }
]

感谢大家的帮助。谢谢

【问题讨论】:

  • 你的后端代码在哪里?
  • 抱歉,我马上补充
  • @M.Izzat 对不起,我真的无法在后端看到它的自动完成部分。这意味着有过滤和分页的代码。否则至少更改标题以反映更多关于 jquery-ui 自动完成的问题

标签: python json django rest


【解决方案1】:

我不熟悉自动完成库,但我认为 nameList 应该是保存 JSON 源的变量。它也需要在each 循环之前进行初始化,现在只要退出each 循环,它就会被清除。

【讨论】:

  • 嗨塞巴斯蒂安,很抱歉回复晚了,正如你所说,我已经在循环之外声明了 nameList 并且它有效。感谢您的帮助
猜你喜欢
  • 2021-03-03
  • 2018-03-08
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多