選択を行うためのオートコンプリート UI を構築しようとしている Django アプリがあります。ユーザーがテキスト ボックスに入力すると、アプリはデータベースから取得した値に基づいて検索候補を表示する必要があります。Dajax/Dajaxice を使用して ajax と UI テンプレートの jquery-ui オートコンプリート ウィジェットを処理したいと考えています。source
jquery-ui オートコンプリート ウィジェットがオートコンプリート属性 (または他のより良い方法)を介して私の dajax 関数を呼び出す方法を説明してもらえますか?
私のコードは、このdajax の例とこのjquery-ui autocomplete の例を組み合わせたものです。
my_app/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 ビュー関数が DB から提案を取得したら、.autocomplete
それをテキスト ボックスに入力するにはどうすればよいですか?
ここ数日、かなりの調査を行ってきましたが、Django-Dajax-JQueryUI アプリケーションの例はほとんどありません。