def get_context(self, request):
# Get blogs
blogs = self.blogs
# Filter by tag
tag = request.GET.get('tag')
if tag:
blogs = blogs.filter(tags__name=tag)
# Pagination
page = request.GET.get('page')
paginator = Paginator(blogs, 10) # Show 10 blogs per page
try:
blogs = paginator.page(page)
except PageNotAnInteger:
blogs = paginator.page(1)
except EmptyPage:
blogs = paginator.page(paginator.num_pages)
# Update template context
context = super(BlogIndexPage, self).get_context(request)
context['blogs'] = blogs
return context
python类EmptyPage()的实例源码
def bookmark_list(request):
all_bookmarks = request.user.bookmarkvideo_set.select_related('video')
# ?? ??? ???? ?????? ??
paginator = Paginator(all_bookmarks, 5)
page = request.GET.get('page')
try:
bookmarks = paginator.page(page)
except PageNotAnInteger:
bookmarks = paginator.page(1)
except EmptyPage:
bookmarks = paginator.page(paginator.num_pages)
context = {
'bookmarks': bookmarks,
}
return render(request, 'video/bookmark_list.html', context)
def get_user_profile(request, username):
user = User.objects.get(username=username)
oglasi = Oglas.objects.filter(vlasnik=user)
emp = Employee.objects.filter(user=user)
if len(emp) > 0:
employee = emp[0]
else:
employee = False
paginator = Paginator(oglasi, 8) # Show 25 contacts per page
page_request_var = "page"
page = request.GET.get(page_request_var)
try:
queryset = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
queryset = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
queryset = paginator.page(paginator.num_pages)
return render(request, 'music/user_profile.html', {'user': user, 'oglasi': queryset, 'employee': employee, 'request': request, 'kategorije': Kategorija.objects.all(), "page_request_var": page_request_var})
def get_context_data(self, **kwargs):
context = super(PaginationView, self).get_context_data(**kwargs)
lines = []
for i in range(200):
lines.append('Line %s' % (i + 1))
paginator = Paginator(lines, 10)
page = self.request.GET.get('page')
try:
show_lines = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
show_lines = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
show_lines = paginator.page(paginator.num_pages)
context['lines'] = show_lines
return context
def serve_listing(self, request):
"""Renders the children pages."""
pages = self.children
# Pagination
page = request.GET.get('page')
paginator = Paginator(pages, settings.ITEMS_PER_PAGE)
try:
pages = paginator.page(page)
except EmptyPage:
pages = paginator.page(paginator.num_pages)
except PageNotAnInteger:
pages = paginator.page(1)
return render(request, self.get_template(request),
{'self': self, 'pages': pages})
def query_job(request):
if request.user.is_superuser:
job_list = Queue.objects.order_by('-create_time').all()
else:
job_list = Queue.objects.filter(user_id=request.user.id).order_by('-create_time').all()
paginator = Paginator(job_list, 12)
page = request.GET.get('page')
'''
try:
jobs = paginator.page(page)
except PageNotAnInteger:
jobs = paginator.page(1)
except EmptyPage:
jobs = paginator.page(paginator.num_pages)
'''
jobs = page_info(paginator, page)
dt, du, dp = get_disk_quota_info(request.user.id)
return render(request, 'ui/query_job.html', {'job_list': jobs, 't_disk': dt, 'u_disk': du, 'disk_per': dp})
def get_context_data(self, **kwargs):
logger.debug('GET: ListMissionView')
context = super(ListMissionView, self).get_context_data(**kwargs)
missions = Mission.objects.all()
paginator = Paginator(missions, 10)
page = self.request.GET.get('page')
try:
show_missions = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
show_missions = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
show_missions = paginator.page(paginator.num_pages)
context['missions'] = show_missions
return context
def get_context_data(self, **kwargs):
context = super(ListMissionTestsSupportingDataView, self).get_context_data(**kwargs)
testdata = self.get_queryset()
paginator = Paginator(testdata, 10)
page = self.request.GET.get('page')
try:
show_data = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
show_data = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
show_data = paginator.page(paginator.num_pages)
context['show_data'] = show_data
context['this_mission'] = Mission.objects.get(id=self.kwargs['mission'])
context['this_test'] = TestDetail.objects.get(id=self.kwargs['test_detail'])
return context
def _get_pagination(objects_list, request):
paginator = Paginator(objects_list, 20)
try:
page = int(request.GET.get('page', '1'))
except:
page = 1
try:
objects = paginator.page(page)
except(EmptyPage, InvalidPage):
objects = paginator.page(1)
# page_range to show at bottom of table
index = objects.number - 1
max_index = len(paginator.page_range)
start_index = index - 4 if index >= 4 else 0
end_index = index + 4 if index <= max_index - 4 else max_index
page_range = paginator.page_range[start_index:end_index]
return objects, page_range
# Status Page
def faircoin_history(request, resource_id):
resource = get_object_or_404(EconomicResource, id=resource_id)
event_list = resource.events.all()
agent = get_agent(request)
init = {"quantity": resource.quantity,}
unit = resource.resource_type.unit
paginator = Paginator(event_list, 25)
page = request.GET.get('page')
try:
events = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
events = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
events = paginator.page(paginator.num_pages)
return render_to_response("work/faircoin_history.html", {
"resource": resource,
"agent": agent,
"unit": unit,
"events": events,
}, context_instance=RequestContext(request))
def all_contributions(request):
event_list = EconomicEvent.objects.filter(is_contribution=True)
paginator = Paginator(event_list, 25)
page = request.GET.get('page')
try:
events = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
events = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
events = paginator.page(paginator.num_pages)
return render_to_response("valueaccounting/all_contributions.html", {
"events": events,
}, context_instance=RequestContext(request))
def project_wip(request, project_id):
#import pdb; pdb.set_trace()
project = get_object_or_404(EconomicAgent, pk=project_id)
process_list = project.wip()
paginator = Paginator(process_list, 25)
page = request.GET.get('page')
try:
processes = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
processes = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
processes = paginator.page(paginator.num_pages)
return render_to_response("valueaccounting/project_wip.html", {
"project": project,
"processes": processes,
}, context_instance=RequestContext(request))
def todo_history(request):
#import pdb; pdb.set_trace()
todo_list = Commitment.objects.finished_todos().order_by('-due_date',)
paginator = Paginator(todo_list, 25)
page = request.GET.get('page')
try:
todos = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
todos = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
todos = paginator.page(paginator.num_pages)
return render_to_response("valueaccounting/todo_history.html", {
"todos": todos,
}, context_instance=RequestContext(request))
def open_todos(request):
#import pdb; pdb.set_trace()
todo_list = Commitment.objects.todos().order_by('-due_date',)
paginator = Paginator(todo_list, 25)
page = request.GET.get('page')
try:
todos = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
todos = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
todos = paginator.page(paginator.num_pages)
return render_to_response("valueaccounting/open_todos.html", {
"todos": todos,
}, context_instance=RequestContext(request))
def weibo_list(request):
context = {}
# ????
params = request.GET.copy()
_obj_list = Weibo.objects.order_by('-id')
paginator = Paginator(_obj_list, 50 ) # Show 10 contacts per page
page = request.GET.get('page')
try:
_objs = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
_objs = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
_objs = paginator.page(paginator.num_pages)
context.update({
"active_nav": "weibos.weibo",
"weibos": _objs,
"params": params
})
return render_to_response('weibos/weibo_list.html', {}, context_instance=RequestContext(request, context))
def image_viewer(request: HttpRequest, archive: int, page: int) -> HttpResponse:
images = Image.objects.filter(archive=archive, extracted=True)
if not images:
raise Http404("Archive " + str(archive) + " has no extracted images")
paginator = Paginator(images, 1)
try:
image = paginator.page(page)
except (InvalidPage, EmptyPage):
image = paginator.page(paginator.num_pages)
image_object = image.object_list[0]
if image_object.image_width / image_object.image_height > 1:
image_object.is_horizontal = True
d = {'image': image, 'backurl': redirect(image.object_list[0].archive).url,
'images_range': range(1, images.count() + 1), 'image_object': image_object}
return render(request, "viewer/image_viewer.html", d)
def device(request):
values = {}
# collect api_key and device id
devices = []
for s in Service.objects.all():
for d in WorkSpace.objects.filter(service=s):
devices.append({'apikey':s.apikey, 'device_id':d.ws_id, 'workspace':d.entity_name, 'address':d.address, 'maxsize':d.maxsize})
paginator = Paginator(devices, 11)
try:
page = request.GET.get('page')
results = paginator.page(page)
except PageNotAnInteger:
results = paginator.page(1)
except EmptyPage:
results = paginator.page(paginator.num_pages)
values = {'results':results}
return render_to_response("RFID.html", values, context_instance=RequestContext(request))
def event_public_tickets(request, slug):
event = get_object_or_404(Event.objects.published(), slug=slug)
context = dict()
update_event_context(event, context)
available_tickets = event.tickettype_set.filter(accessibility=TicketType.PUBLIC)\
.exclude(attendee_type=TicketType.AID).exclude(attendee_type=TicketType.VOLUNTEER)\
.exclude(attendee_type=TicketType.PRESS).order_by('price', 'title')
available_tickets = [t for t in available_tickets
if t._get_current_status() in (TicketType.ACTIVE, TicketType.SOLDOUT)]
paginator = Paginator(available_tickets, 10)
page = request.GET.get('page')
try:
available_tickets = paginator.page(page)
except PageNotAnInteger:
available_tickets = paginator.page(1)
except EmptyPage:
available_tickets = paginator.page(paginator.num_pages)
context['tickets'] = available_tickets
context['dispaly_ticket_availability'] = settings.DISPLAY_TICKET_AVAILABILITY
return render(request=request, template_name='konfera/event/public_tickets.html', context=context)
def rqloglist(request):
if request.method != "GET":
raise SuspiciousOperation
if not request.user.is_authenticated() or not request.user.is_active:
raise PermissionDenied
is_admin = check_is_admin(request.user.username)
if not is_admin:
raise PermissionDenied
log = models.RequestsLog.objects.all().order_by('-date')
paginator = Paginator(log, 100)
page = request.GET.get('page')
try:
logpage = paginator.page(page)
except PageNotAnInteger:
logpage = paginator.page(1)
except EmptyPage:
logpage = paginator.page(paginator.num_pages)
vars = { 'list': logpage }
return render(request, 'requests/rqloglist.html', vars)
def loglist(request):
if request.method != "GET":
raise SuspiciousOperation
if not request.user.is_authenticated():
raise PermissionDenied
is_admin = check_is_admin(request.user.username)
if not is_admin:
raise PermissionDenied
log = Log.objects.all().order_by('-date')
paginator = Paginator(log, 100)
page = request.GET.get('page')
try:
logpage = paginator.page(page)
except PageNotAnInteger:
logpage = paginator.page(1)
except EmptyPage:
logpage = paginator.page(paginator.num_pages)
vars = {'list': logpage }
return render(request, 'logs/log.html', vars)
def paginate(self, page, per_page, data):
list_games = data
paginator = Paginator(list_games, per_page)
try:
games = paginator.page(page)
except PageNotAnInteger:
games = paginator.page(1)
except EmptyPage:
games = paginator.page(1)
page = 1
interval_range = self.get_pagination_range(page, paginator.num_pages)
list_games = GameSerializer(games.object_list, many=True).data
paginated = {
"games": list_games,
"info": {
"range_start": interval_range[0],
"range_end": interval_range[1],
"num_pages": paginator.num_pages,
"page": page
}
}
return paginated
def _build_page_range(paginator, index = 1):
try:
page = paginator.page(index)
except PageNotAnInteger:
page = paginator.page(1)
except EmptyPage:
page = paginator.page(paginator.num_pages)
page.page_range = [page.number]
crt_range = 0
for i in range(1,5):
if (page.number + i) <= paginator.num_pages:
page.page_range = page.page_range + [ page.number + i]
crt_range +=1
if (page.number - i) > 0:
page.page_range = [page.number -i] + page.page_range
crt_range +=1
if crt_range == 4:
break
return page
def get(self, request):
user = request.user
comments = Comment.objects.all().filter(deleted=False).filter(user=user).order_by('-created')
posts = Post.objects.all().filter(deleted=False).filter(user=user).order_by('-created')
total_count = Comment.objects.all().filter(deleted=False).filter(user=user).count() + Post.objects.all().filter(deleted=False).filter(user=user).count()
all_items = chain(comments, posts)
all_items = sorted(all_items, key=attrgetter('created'), reverse=True)
paginator = Paginator(all_items, self.paginate_by)
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
posts = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
posts = paginator.page(paginator.num_pages)
return render(request, self.template_name, {'posts': posts})
def __init__(self, request, *args, **kwargs):
# ??? ?????? ???????: ???-?? ???????, ???????? ??????? ? ?????? ???????,
# ??? ?????? ????? ????????
self.page_neighbors = kwargs.pop('page_neighbors', 2)
# ??? ?????? ???????: ???-?? ???????, ???????? ? ??????????,
# ??? ?????? ????? ????????
self.side_neighbors = kwargs.pop('side_neighbors', 0)
# ??? ?????? ???????: ??????????? ???-?? ???????, ????????? ???????????
self.min_zip_pages = kwargs.pop('min_zip_pages', 2)
# ?????, ??????????? ? ???????
self.anchor = kwargs.pop('anchor', '')
super().__init__(*args, **kwargs)
self.request = request
if not self.allow_empty_first_page and self.count == 0:
raise EmptyPage('That page contains no results')
def get_context_data(self):
context = {}
attempts = Attempt.objects.own(self.request).order_by('-created_time')
paginator = Paginator(attempts, 10)
page = self.request.GET.get('page')
try:
attempts = paginator.page(page)
except PageNotAnInteger:
attempts = paginator.page(1)
except EmptyPage:
attempts = paginator.page(paginator.num_pages)
context['attempts'] = attempts
success_rate = None
if Attempt.objects.num_attempts(self.request):
success_rate = 100 * (Attempt.objects.num_good_attempts(self.request) / Attempt.objects.num_attempts(self.request))
success_rate = round(success_rate, 1)
context['success_rate'] = success_rate
return context
def get_context_data(self, **kwargs):
context = super(ScienceListView, self).get_context_data(**kwargs)
science_lists = self.get_queryset()
paginator = Paginator(science_lists, self.paginate_by)
try:
page = self.kwargs['page']
except:
page = 1
try:
scienceart = paginator.page(page)
except PageNotAnInteger:
scienceart = paginator.page(1)
except EmptyPage:
scienceart = paginator.page(paginator.num_pages)
context['scienceart'] = scienceart
context['sci'] = self.kwargs['sci_slug']
return context
def get_context_data(self, **kwargs):
context = super(TermListView, self).get_context_data(**kwargs)
term_lists = self.get_queryset()
paginator = Paginator(term_lists, self.paginate_by)
try:
page = self.kwargs['page']
except:
page = 1
try:
terms = paginator.page(page)
except PageNotAnInteger:
terms = paginator.page(1)
except EmptyPage:
terms = paginator.page(paginator.num_pages)
context['terms'] = terms
context['term_slug'] = self.kwargs['term_slug']
return context
def get_context_data(self, **kwargs):
context = super(VideoListView, self).get_context_data(**kwargs)
video_lists = self.get_queryset()
paginator = Paginator(video_lists, self.paginate_by)
try:
page = self.kwargs['page']
except:
page = 1
try:
videos = paginator.page(page)
except PageNotAnInteger:
videos = paginator.page(1)
except EmptyPage:
videos = paginator.page(paginator.num_pages)
context['videos'] = videos
context['vid'] = self.kwargs['vid_slug']
return context
def get_context_data(self, **kwargs):
context = super(TwitsListView, self).get_context_data(**kwargs)
twit_lists = self.get_queryset()
paginator = Paginator(twit_lists, self.paginate_by)
try:
page = self.kwargs['page']
except:
page = 1
try:
twits = paginator.page(page)
except PageNotAnInteger:
twits = paginator.page(1)
except EmptyPage:
twits = paginator.page(paginator.num_pages)
context['twits'] = twits
context['twit_slug'] = self.kwargs['twit_slug']
return context
def index(request):
posts_list = Post.objects.all() # .order_by("-timestamp")
paginator = Paginator(posts_list, 5)
page_var = 'page1'
page = request.GET.get(page_var)
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
context = {
'page_title': 'List of Posts',
'posts': posts,
'page_var': page_var
}
return render(request, 'posts/index.html', context)