Skip to content

Instantly share code, notes, and snippets.

@FernandoEscher
Created December 13, 2010 23:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FernandoEscher/739797 to your computer and use it in GitHub Desktop.
Save FernandoEscher/739797 to your computer and use it in GitHub Desktop.
def page_management(request, items, num_items):
"""
Gets the page data from the post of a request.
Returns a dict with the actual page information.
"""
page_change = request.POST.get('quiz_page_change', '')
paginator = Paginator([item for item in items], num_items)
if page_change == 'Previous':
page_to_render = request.POST.get('prev_page', '1')
elif page_change == 'Next':
page_to_render = request.POST.get('next_page', '1')
else:
page_to_render = 1
try:
page_num = int(page_to_render)
except ValueError:
page_num = 1
#Gets the selected page
try:
page = paginator.page(page_num)
except (EmptyPage, InvalidPage):
page = paginator.page(paginator.num_pages)
#Get the page objects
page_items = page.object_list
#Next page number
page_next = page.next_page_number() if page.has_next() else None
#Previous page number
page_previous = page.previous_page_number() if page.has_previous() else None
return {'page_items':page_items,
'page':page,
'next_page': page_next,
'previous_page': page_previous}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment