Loendivaadete peamine probleem on see, et neid on raske kasutada ja need võivad segadusse ajada.
with pagination
I am trying to create a listview with pagination in Django. I have tried the following code but it is not working:
<code>class MyListView(ListView):
model = MyModel
template_name = 'my_template.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['page'] = self.request.GET.get('page')
return context
def get(self, request, *args, **kwargs):
response = super().get(request, *args, **kwargs)
try:
page = int(response.context['page']) - 1
if page < 0: page = 0 # first page is 1 not 0! (paginator bug?)
response.context['previous'] = str(page) if page > 0 else None # None for first page! (paginator bug?)
response.context['next'] = str(page + 2) if len(response.context['object_list']) == 10 else None # None for last page! (paginator bug?)
except KeyError: pass # no 'page' in the context... means we're on the first one! (no previous!) or last one! (no next!) or something went wrong... just ignore it and don't add anything to the context then...
return response
</code>
See kood on klassipõhine vaade lehekülgede arvuga loendivaatele. Esimesed neli rida määratlevad klassi, kasutatava mudeli, kasutatava malli ja kasutatavad kontekstiandmed. Järgmised neli rida määratlevad hankimismeetodi ja vastuse. Viimased neli rida määratlevad meetodi get_context_data ja tagastavad kontekstiandmed.
Mis on loendivaade
Loendivaade on Django vidin, mis kuvab üksuste loendi.