У меня есть окно поиска на странице, которое нуждается в обновлении результатов без обновления всей страницы. Я использую представления Django, чтобы подать результаты, и использую jQuery для извлечения и загрузки результатов на странице. Моя проблема похожа на вопрос Stack O. , но я не могу понять, как правильно генерировать ссылки Next и Previous.
Вот поисковый запрос Django:
def search_page(request):
# Perform the search and return a QuerySet
form = SearchForm()
contentq = []
show_results = False
if 'query' in request.GET:
show_results = True
query = request.GET['query'].strip()
if query:
form = SearchForm({'query' : query})
contentq = ContentQueue.objects.filter(
description__icontains=query
)
query = query.replace(' ', '+')
# This next section sets up Paginator
ITEMS_PER_PAGE = 6
paginator = Paginator(contentq, ITEMS_PER_PAGE)
try:
page_number = int(request.GET['page'])
except (KeyError, ValueError):
page_number = 1
try:
page = paginator.page(page_number)
except InvalidPage:
raise Http404
contentq = page.object_list
variables = RequestContext(request, {
'form': form,
'contentq': contentq,
'show_results': show_results,
'query': query,
'show_paginator': paginator.num_pages > 1,
'has_prev': page.has_previous(),
'has_next': page.has_next(),
'page': page_number,
'pages': paginator.num_pages,
'next_page': page_number + 1,
'prev_page': page_number -1
})
if request.GET.has_key('ajax'):
return render_to_response('contentq.html', variables)
else:
return render_to_response('create_collection_ui.html', variables)
Вот скрипт jQuery, который вызывает представление поиска Django:
function search_submit() {
var query = $("#id_query").val();
$("#search-results").load("/search/?ajax&query=" + encodeURIComponent(query));
return false;
}
$(document).ready(function () {
$("#search-form").submit(search_submit);
});
И, наконец, вот HTML-код, который формирует ссылки Next и Previous.
{% if show_paginator %}
{% if query %}
<div class="paginator">
{% if has_prev %}
<a href="?page={{ prev_page }}&query={{ query }}">« Previous</a>
{% endif %}
{% if has_next %}
<a href="?page={{ next_page }}&query={{ query }}">Next »</a>
{% endif %}
(Page {{ page }} of {{ pages }})
</div>
{% else %}
<div class="paginator">
{% if has_prev %}
<a href="?page={{ prev_page }}">« Previous</a>
{% endif %}
{% if has_next %}
<a href="?page={{ next_page }}">Next »</a>
{% endif %}
(Page {{ page }} of {{ pages }})
</div>
{% endif %}
{% endif %}
Чувствуй себя так близко, но так далеко! Любая помощь будет принята с благодарностью.