jQuery 自动完成标签

1 投票
3 回答
1050 浏览
提问于 2025-04-15 18:49

有没有人能告诉我怎么在Django模板中使用标签自动补全功能?

我在Django的管理界面里做过这个,但我不太清楚怎么在模板里实现。

提前谢谢大家!

3 个回答

1

这是一个我实现了自动补全功能的模板

$(document).ready(function() {

    $("#searchbox").autocomplete('/search_stuff/', {
        width: 300,
        multiple: false,
        matchContains: true,
        delay: 900,
        extraParams: {
               s: function() { return $("#status").val(); }
        }
});

其中,search_stuff 函数会返回一个符合条件的所有项目的文本列表。这样解释有帮助吗?

2

在我的模板中,我有这段代码:

$(document).ready(function(){
  $("#tags1").autocomplete("/taglookup/", {
        width: 320,
        multiple: true,
        multipleSeparator: " "
         });
   }

在我的url.py文件中,我在url模式的元组里写了这些内容,具体内容可以根据你想要如何连接视图和网址来决定!

(r'^taglookup/$', 'twine.twineapp.views.tag_lookup')

在我的views.py文件中,我实现了tag_lookup这个视图,代码如下:

def tag_lookup(request):
    # Default return list
    results = []
    if request.method == "GET":
        if request.GET.has_key(u'q'):
            value = request.GET[u'q']
            # Ignore queries shorter than length 2
            if len(value) > 2:
               TI = Tag.objects.filter(name__startswith=value.lower())
               results = [ x.name for x in TI]
    return HttpResponse('\n'.join(results), mimetype='text/plain')

顺便说一下,我使用了Tagging这个包,所以在上面的代码中有Tag对象。

2

你可以使用我开发的django-tagging-autocomplete这个可重用的应用,这样就能利用里面提供的TagAutocomplete表单小部件。想了解如何使用这个小部件,可以查看文档中的“使用表单小部件”部分。

请注意,这个应用需要你使用django-tagging来管理你的标签。此外,你还需要在模板的<head>部分放入{{ form.media }}(这里的“form”是你表单的名字),这样小部件才能加载它需要的JavaScript文件。

撰写回答