def get_paginators(request, objects, per_page=20, paginator_range=5):
    paginator_range = int(paginator_range)
    from django.core.paginator import Paginator, InvalidPage, EmptyPage
    paginator = Paginator(objects, per_page)

    # Make sure page request is an int. If not, deliver first page.
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    # If page request (9999) is out of range, deliver last page of results.
    try:
        obj_list = paginator.page(page)
    except (EmptyPage, InvalidPage):
        obj_list = paginator.page(paginator.num_pages)

    if obj_list.number-paginator_range >= 0:
        from_ = obj_list.number-paginator_range
    else:
        from_ = 0

    if obj_list.number+paginator_range <= len(paginator.page_range):
        to_ = obj_list.number+paginator_range
    else:
        to_ = len(paginator.page_range)

    page_range = paginator.page_range[from_:to_]

    return (obj_list, page_range)

# Use follwing code in your template to show page_range
{% for item in page_range %}
  {% ifequal item event_list.number %}
    <span class="current number">{{item}}</span>
  {% else %}
    <a href="?page={{item}}" class="number">{{item}}</a>
  {% endifequal %}
{% endfor %}