我有一个 Django 应用程序,我正在尝试为其构建一个自动完成 UI 以进行选择。当用户在文本框中键入内容时,应用程序应根据从数据库中检索到的值提出搜索建议。我想使用 Dajax/Dajaxice 来处理 UI 模板的 ajax 和 jquery-ui 自动完成小部件。有人可以解释一下如何让 jquery-ui 自动完成小部件通过自动完成source
属性(或任何其他更好的方式)调用我的 dajax 函数吗?
我的代码是这个dajax 示例和这个jquery-ui 自动完成示例的组合。
我的应用程序/ajax.py:
from my_app.models import MyModel
from dajax.core import Dajax
from dajaxice.decorators import dajaxice_register
from django.utils import simplejson
@dajaxice_register
def auto_filter_selections(request, symbol):
dajax = Dajax()
result = MyModel.objects.filter(symbol__startswith = symbol)
dajax.assign('#id_symbol', 'innerHTML', str(result))
return dajax.json()
模板:my_app_ui.html
<head>
....
<script type="text/javascript" src="{{STATIC_URL}}jquery/jquery-1.7.2.js"></script>
<script type="text/javascript" src="{{STATIC_URL}}dajax/jquery.dajax.core.js"></script>
<script type="text/javascript" src="{{STATIC_URL}}/jquery/jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.js"></script>
....
<script>
$(function() {
$("#id_symbol").autocomplete({
source: "Dajaxice.ui.auto_filter_symbols(Dajax.process,'symbol':$('#id_symbol').serialize(true)});",
minLength: 1 //We want to search for even one character
});
});
</script>
....
</head>
<body>
....
<div class="ui-widget">
<label for="id_symbol">Symbol: </label>
<input id="id_symbol">
</div>
....
</body>
如果您在上面注意到,我使用的是 jquery-1.7.2 和 jquery-ui-1.10.4。这是因为dajax 文档说它与 jquery-1.7.2 兼容。不确定我是否可以使用更新的 jquery 版本。
我不确定如何让模板的 javascript 调用我的 dajax 函数。.autocomplete的 jquery-ui文档说要使用它的source
属性,但没有给出一个很好的例子。谁能告诉我以上是否正确?
一旦 dajax 视图函数从数据库中检索到建议,我如何.autocomplete
用它填充文本框?
在过去的几天里,我做了很多研究,但很少有 Django-Dajax-JQueryUI 应用程序的例子。