How to set Pageinator and Photo Upload in Django
Django Pageinator
home function:
def home(request):
if 'account' in request.session:
p=Reg.objects.get(account=request.session['account'])
sql=Edit.objects.filter(edit_id=p.id)
return render(request,'edit/home.html',{'name':request.session['account'],'con':sql})
The home.html
{% for i in con %}
<div class="for">
<p>{{i.title}}</p><p>{{i.time}}</p>
</div>
{% endfor %}
Set page, use GET to get the database content.
the page code:
from django.core.paginator import Paginator,EmptyPage,InvildPage
q=Edit.objects.all().order_by('id')
paginator=Paginator(q,1) #set how many rows in one page, this is set one rows in one page
try:
page=int(request.GET.get('page',1))
except ValueError:
page=1
try:
content=paginator.page(page)
except (EmptyPage,InvalidPage):
content=paginator.page(paginator.num_pages)
About Paginator information:
>>>from django.core.paginator import Paginator >>>objects=['12','dfs','tony','jhon','jery','max','heeny'] >>>p=Paginator(object,2) #set veery page have 2 rows >>>p.count #how many content >>>p.num_pages #how many pages >>>p.page_range #the page list >>>page1=p.page(1) #first page >>>page1 #show the 1st page content index list >>>page1.object_list #show the 1st page content list >>>page2=p.page(2) #2ed page >>>page2 >>>page2.number #return the page number >>>page2.has_next() #whether have next page? True or False >>>page2.has_previous() #whether have previous page? True or False >>>page2.next_page_number() #the next page number >>>page2.previous_page_number() #the previous number >>>page2.start_index() #this page 1st line index >>>page2.end_index() #this page last line index >>>p.page(10) #if the page exists, return error
Update html template:
{% for i in content.object_list %}
<div class="for">
<p>{{i.title}}</p><p>{{i.time}}</p>
</div>>
{% endfor %}
{% if content.has_previous %}
<a href="?page={{content.previous_page_number}}">NEXT</p>
{% end if%}
<span class="current">
current page: {{content.number}} / total pages: {{content.paginator.num_pages}}
{% if content.has_next %}
<a href="?page={{content.next_page_number}}">PREVIOUS</a>
{% endif %}
Django Photo Upload
In index.html add upload part:
<input type="file" name="files" />
Create forms.py in edit part.
from django import forms
class NewTopicForm(forms.Form):
title=forms.CharField(max_length=50,error_message={'required':'Don\'t empty'})
image=forms.ImageField(required=False)
Update “model.py”, add “img” item.
img=models.ImageField(upload_to="templates/pic/",blank=True,null=True)
Update “views.py”
if 'files' in request.FILES:
image=request.FILES['files']
else:
image=None
Then we upload the photo, update “views.py” to save the img path.