javascript - 从自动完成搜索表单访问数据

标签 javascript jquery python django

我的自动完成表单工作正常,即。它正确地完成了数据。现在我希望可以访问该数据 -> 将我链接到有效的网址。 我试图让它自己工作,但我遇到了困难。

有人可以给我一个提示或工作示例的链接吗? 感谢您抽出时间。

View .py

def paper_autocompleate(request):
    if request.is_ajax():
        q = request.GET.get('term', '')
        autoPaperwork = Paperwork.objects.filter(
    Q(title__icontains=q) | Q(description__icontains=q))[:10]
        results = []
        for p in autoPaperwork:
            p_json = {}
            p_json = p.title
            results.append(p_json)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

url.py

urlpatterns = patterns('', 
    url(r'^api/paper_autocompleate/', 'papers.views.paper_autocompleate', name='paper_autocompleate')
)

JQAuto.js

$(function() {
  $("#autoPaperwork").autocomplete({
    source: "/api/paper_autocompleate/",
    minLength: 2,
  });
});

index.html

<div class="ui-widget">
    <input id="autoPaperwork">
</div>

最佳答案

未经测试,但我认为你需要这样做:

def paper_autocompleate(request):
if request.is_ajax():
    q = request.GET.get('term', '')
    autoPaperwork = Paperwork.objects.filter(
Q(title__icontains=q) | Q(description__icontains=q))[:10]
    results = []
    for p in autoPaperwork:
        results.append(p.title)
    data = json.dumps(results)
else:
    data = 'fail'
mimetype = 'application/json'
return HttpResponse(data, content-type=mimetype)

不确定你的 p_json正在做,但我的 JQuery-UI 自动完成功能通过 jsut 的简单 json 列表进行工作

["result 1", "result 2"]

我通过使用 json.dumps(<python_list_object>) 得到的

编辑:这是我的代码,用于任何数据库对象字段的通用排序自动竞争

obj = apps.get_model(app_label=app_name, model_name=model_name)
#obj = locate('LessonApp.models.%s' % otype) # old way of locating
try:
    search_list = list(obj.objects.\
                       exclude(Q(**{field: ''}) | Q(**{'{0}__isnull'.format(field): True})).\
                       values_list(field, flat=True).distinct().order_by(field))
    if q:
        search_list = filter(lambda s: s[:len(q)].lower() == q.lower(), search_list)  # search the list for q, ignore case
    return HttpResponse(json.dumps(search_list), content_type='application/json')
except Exception as ex:
    return HttpResponse('{"result": "error", "error": "DB Error\n%s"}' % ex, content_type='application/json')

编辑:这是我的 javascript 来调用我的输入

$('#id_group_name').autocomplete({
            source: "/autocomplete/cec_cms/CmsNews/group_name",
            minLength: 0,
            delay: 500 //default is 300
        }).focus(function() {
            $(this).autocomplete('search', $(this).val());
        });

关于javascript - 从自动完成搜索表单访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672111/

相关文章:

javascript - 使用javascript交换两个文本框中的值

jquery:iphone喜欢动画吗?

python - FlaskApp Running with Apache unable to save file on server side cannot get permission to work?

Javascript 与母版页一起加载

Javascript:如何比较两个数组,并返回某个索引中具有最高值的数组的名称

javascript - 如何借助jquery显示消息?

jquery - 为正整数创建 jQuery 验证规则

jQuery 向下滚动按钮用于将页面滚动 100%

python - 为什么 DictWriter 在我的代码中不起作用?

python - 如何确保使用 Python (pysdl2) 准备好 SDL2 全屏窗口?