AJAX Pagination - небольшая проблема с получением ссылок Next и Previous на работу (с использованием jQuery и Django) - PullRequest
0 голосов
/ 13 мая 2011

У меня есть окно поиска на странице, которое нуждается в обновлении результатов без обновления всей страницы. Я использую представления 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 }}">&laquo; Previous</a>
    {% endif %}
    {% if has_next %}
        <a href="?page={{ next_page }}&query={{ query }}">Next &raquo;</a>
    {% endif %}
    (Page {{ page }} of {{ pages }})
</div>
{% else %}
<div class="paginator">
    {% if has_prev %}
        <a href="?page={{ prev_page }}">&laquo; Previous</a>
    {% endif %}
    {% if has_next %}
        <a href="?page={{ next_page }}">Next &raquo;</a>
    {% endif %}
    (Page {{ page }} of {{ pages }})
</div>
{% endif %}
{% endif %}

Чувствуй себя так близко, но так далеко! Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 13 мая 2011

Потратил еще немного времени на понимание решения, на которое я ссылался в своем вопросе и смогло это выяснить. Я в значительной степени использовал код решения как есть, за исключением, конечно, изменения тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...