I’m trying to paginate a page in order to display five statuses per page. After inputting these codes, it fails to paginate. Below are the codes for pagination and updating of status in my django app.
Views(views.py file):
def qask(request):
extra_data_context={}
#if there's nothing in the field do nothing.
if request. method=="POST":
form =AskForm(request.POST)
if form.is_valid():
data=form.cleaned_data
newask=Ask(user= request.user,status=data['status'],pub_date=datetime.datetime.now())
newask.save()
extra_data_context.update({'AskForm':form})
else:
form = AskForm()
extra_data_context.update({'AskForm':form})
extra_data_context.update({'Asks':Ask.objects.filter(user=request.user)})
plan=Ask.objects.all()
paginator=Paginator(plan, 5)
try:
page=int(request.GET.get('page','1'))
except ValueError:
page=1
try:
fp=paginator.page(page)
except (EmptyPage, InvalidPage):
fp=paginator.page(paginator.num_pages)
return render_to_response ('quik_ask.html',extra_data_context,context_instance=RequestContext(request))
Template (html file):
{% block content %}
{% for Ask in Asks %}
<tr>
<p> {{Ask.user}} </p> </strong>
<p>{{Ask.status}}</p>
<p> {{Ask.pub_date|timesince }} ago </p>
</tr>
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if Asks.has_previous %}
<a href="?page={{ Asks.previous_page_number }}">previous</a>
{% endif %}
<span class="current">
Page {{ Asks.number }} of {{ Asks.paginator.num_pages }}.
</span>
{% if Asks.has_next %}
<a href="?page={{ Asks.next_page_number }}">next</a>
{% endif %}
</span>
</div>
{% endblock %}
You have your page data in
fpvariable, but it is never submitted to your template. Instead, you are trying to get you page data fromAsks, but it has nothing to do with paginator in your code. I’m not sure what you’re trying to paginate, but if you want to paginate through your filtered data, it should be something like this: