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.