Django paginator与page

上传图片

概述:文件上传时,文件数据存储在request.file属性中
存储路径:在static目录下创建upfile目录用于存储接收上传的文件
配置settiings.py文件
注意:form表单上传文件需要加enctype="multipart/form-data"属性
上传文件必须是post请求

def upfile(request):
    return  render(request,'app1/upfile.html')
from django.conf import settings
def savefile(request):
    if request.method=="POST":
        f=request.FILES["file"]#获取上传的文件
        #文件在服务器的路径
        filepath=os.path.join(settings.MEDIA_ROOT,f.name)
        with open(filepath,'wb') as fp:
            for info in f.chunks():
                fp.write(info)
        return HttpResponse("上传成功")
    else:
        return HttpResponse("上传失败")
    return  render(request,'app1/upfile.html')

分页

paginator对象

创建对象

格式:paginator(列表,整数)
整数就是分几页
返回值:返回一个分页对象

属性

count:对象总数
num_pages:页面总数
page_range:页码列表
例:[1,2,3,4,5]页码从1开始

方法

page(num):
获得一个page对象,如果提供的页码不存在会抛出一个"invalidpage"异常

异常

invalidpage:当向page()传递一个无效的页码是抛出
PageNotAnlnteger:当向page()传递的不是一个整数时抛出
EmptyPage:当向page()传递一个有效值,但页面没有数据时抛出

page对象

创建对象

Paginator对象的page()方法返回得到Page对象
不需要手动创建

属性

object_list:当前页上所有的数据(对象)列表
number:当前页的页码值
paginator:当前page对象关联的paginator对象

方法

has_next():判断是否有下一页,如果有返回true
has_previous():判断是否有上一页,如果有返回true
has_other_pages():判断是否有上一页或下一页,如果有返回true
next_page_numer():返回下一页的页码,如果下一页不存在,抛出invalidpage异常
previous_page_number():返回上一页的页码,如果上一页不存在,抛出invalidpage异常
len():返回当前页的数据(对象)个数

例:

from .models import grades
from django.core.paginator import Paginator
def studentpage(request,pageid):
    allstudentlist=grades.objects.all()
    studentlist=Paginator(allstudentlist,6)
    page=studentlist.page(pageid)
    return  render(request,"app1/studentpage.html",{"page":page})
{% load static %}



    
    Title
   


    {% for i in page %}
  • {{ i.gname}}
  • {% endfor %}
    {% for index in page.paginator.page_range %}
  • {{ index }}
  • {% endfor %}

Django paginator与page_第1张图片
Django paginator与page_第2张图片

你可能感兴趣的:(Django paginator与page)