任何人都可以告诉我如何在django模板中使用标记自动完成功能吗?
我在django管理界面中做过这个,但我很困惑如何在模板中做到这一点。
提前致谢
答案 0 :(得分:2)
在我的模板中,我有这段代码:
$(document).ready(function(){
$("#tags1").autocomplete("/taglookup/", {
width: 320,
multiple: true,
multipleSeparator: " "
});
}
在我的url.py上我有这个urlparttern元组,它可以是任何东西,取决于你想如何连接你的观点和网址!
(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')
PS:我使用Tagging包,这就是为什么我在上面的代码中有Tag对象。
答案 1 :(得分:2)
您可以使用my django-tagging-autocomplete reusable app并利用提供的TagAutocomplete表单小部件。您可以在“使用表单小部件”下找到有关使用小部件in the documentation的更多信息。
请注意,该应用要求您为标签使用django-tagging。您还需要在模板的{{ form.media }}
部分中放置<head>
(其中“form”是表单的名称),以允许窗口小部件包含它的JavaScript文件。
答案 2 :(得分:1)
这是我实施自动填充的模板
$(document).ready(function() {
$("#searchbox").autocomplete('/search_stuff/', {
width: 300,
multiple: false,
matchContains: true,
delay: 900,
extraParams: {
s: function() { return $("#status").val(); }
}
});
其中search_stuff返回符合条件的所有项目的文本列表。这有帮助吗?