Затерянный в Джанго и jQuery UI автозаполнение земли - PullRequest
4 голосов
/ 06 декабря 2011

Я пытаюсь выучить Django, следуя учебному пособию из старой книги по Django, и в настоящее время я застрял в реализации автозаполнения jquery ui для одного поля в моем приложении.Я много искал по этому вопросу, только чтобы запутаться.Вот код, о котором идет речь.

urls.py

  `(r'^ajax/tag/autocomplete/$', ajax_tag_autocomplete),`

tag_autocomplete.js

$(document).ready(function () {
    $("#id_tags").autocomplete({
        source: "/ajax/tag/autocomplete/",
    });
});

views.py

def ajax_tag_autocomplete(request):
    if 'term' in request.GET:
        tags = Tag.objects.filter(
            name__istartswith=request.GET['term']
        )[:10]
        return HttpResponse(u'\n'.join(tag.name for tag in tags))
    return HttpResponse()

когда я захожу в свое приложение и начинаю вводить символы в это поле тега, я ничего не отображаю, список не отображается.Однако firebug показывает, что код выполняет запрос и возвращает правильный результат.Какую простую вещь мне не хватает?

Ответы [ 3 ]

6 голосов
/ 06 декабря 2011

Как сказал Минрас в своем комментарии, ваше представление должно возвращать JSON-массив строк или объектов для заполнения данных.

from django.utils import simplejson

возвращает массив json

return HttpResponse( simplejson.dumps( [ tag.name for tag in tags ] ) )
0 голосов
/ 14 октября 2015

Ответ czarchaic является правильным, но датированным.

simplejson опущен, поскольку Django 1.5

https://docs.djangoproject.com/en/1.7/releases/1.5/#django-utils-simplejson

вместо django.utils import simplejson

использовать импорт JSON

0 голосов
/ 06 декабря 2011

У вас есть теги, введенные в вашу базу данных?Какие-либо результаты для следующего?

Tag.objects.all()

Редактировать: На самом деле, вместо использования термина в качестве ключа поиска, попробуйте использовать 'q'.

...