2014-05-05 3 views
0

Я пытаюсь использовать pagination lib, показанный здесь https://docs.djangoproject.com/en/dev/topics/pagination/. Проблема, с которой я сталкиваюсь, заключается в том, что когда я перехожу на следующую страницу, я теряю состояние моего последнего запроса GET.Django Paging With Same GET

ex. www.mysite.com/search-results/?Make=BMW

Затем, когда я нажимаю следующую страницу, я теряю часть Make = BMW моего последнего получения.

www.mysite.com/search-results/?page=2

Есть ли способ, что я могу представить новый GET для моей следующей страницы без перечисления этой информации в моих URL и заставляя его терять состояние ?

Вот как я получаю свой набор запросов и используя lib.

 listings = Listing.objects.all() 

     paginator = Paginator(listings, 25) 

     page = request.GET.get('page') 
     try: 
      listing_info = paginator.page(page) 
     except PageNotAnInteger: 
      listing_info = paginator.page(1) 
     except EmptyPage: 
      listing_info = paginator.page(paginator.num_pages) 

ответ

1

Я предполагаю, что вы используете <href> пример в документации вы связаны в шаблоне? т.е .:

<a href="?page={{ listing_info.next_page_number }}">next</a> 

Проблема в том, что он будет возвращать только ваш текущий URL плюс параметры запроса вы предоставили, который является только параметр ?page.

Я думаю, вы можете исправить это двумя разными вещами. Во-первых, вам нужно получить свой параметр Make в своем представлении и передать его в свой шаблон. Попробуйте добавить что-то вроде:

make = request.GET.get('Make', None) 
... 
return render_to_response('list.html', {"listing_info": listing_info, "make": make}) 

Затем вам нужно настроить href тег в шаблоне, так оно и проходит make:

<a href="?Make={{ make }}?page={{ listing_info.next_page_number }}">next</a> 

Вам может понадобиться, чтобы играть с этим немного и также иметь дело как обращаться если Make = None (если возможно).