Допустим, вы хотите настроить автозаполнение в некотором поле ввода (например, <input type="text" id="id_input">
) с именем пользователя ваших пользователей. Я так и сделал, и у меня все прошло гладко.
urls.py
Прежде всего, добавьте URL, по которому ajax будет искать
url(r'^ajax/autocomplete/$', views.autocomplete, name='ajax_autocomplete')
views.py
Затем установите представление для извлечения из базы данных необходимой вам информации
from django.http import JsonResponse
def autocomplete(request):
if request.is_ajax():
queryset = User.objects.filter(username__startswith=request.GET.get('search', None))
list = []
for i in queryset:
list.append(i.username)
data = {
'list': list,
}
return JsonResponse(data)
JavaScript
Наконец, вам нужно создать функцию JavaScript, которая будет обращаться к базе данных и возвращать имена пользователей, которые соответствуют значению поля ввода, каждый раз, когда вы нажимаете (и отпускаете) клавишу. Для этого мы будем использовать Ajax , JQuery и JQuery-ui с функцией автозаполнения
jQuery(function() {
$("#id_input").on('keyup', function(){
var value = $(this).val();
$.ajax({
url: "{% url 'ajax_autocomplete' %}",
data: {
'search': value
},
dataType: 'json',
success: function (data) {
list = data.list;
$("#id_input").autocomplete({
source: list,
minLength: 3
});
}
});
});
});
И это все, друг мой! Для получения дополнительной информации, вы можете проверить это учебник