django 自定义分页 影片展示

image

创建movie项目
创建模型类(逆向生成)
影片sql语句,直接拉到Navicat生成表 逆向生成模型类
http://note.youdao.com/noteshare?id=49e7e45a61fd266869ebacbc0134589b&sub=3F0F4155287749CF88AF0822060B78A9

python manage.py inspectdb>movie/models.py
配置URL
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url('admin/', admin.site.urls),
    url('movie/', include('movie.urls')),
]


from django.conf.urls import url
from movie import views

urlpatterns=[
    url(r'^$',views.index_view),

]


创建视图函数
from django.shortcuts import render
from movie.models import *
import math

def page(num=1,size=20):#每页显示
    num = int(num)
    if num < 1:
        num = 1

    # 计算总页数
    total_records = Movie.objects.count()
    total_pages = int(math.ceil(total_records * 1.0 / size))


    if num > total_pages:
        num = total_pages
    movielist = TMovie.objects.all() #获取所有数据类列表对象
    movies = movielist[((num - 1) * size):(num*size)]#列表切片


    return movies,num
<!--首先执行-->
def index_view(request):
 # 接收页面的get请求 并获得num值 如果没有就是1
    num = request.GET.get('num',1)
    num=int(num)
    <!--调用上面函数 有两个返回值进行接收 num也传入进行处理-->
    pages_list,n = page(num)

    pre_page = n-1
    next_page = n+1

    conext={'movies': pages_list,'pre_page':pre_page,'next_page':next_page}
    return render(request,'movie.html',conext)


创建模板显示

 <div id="header"  class="clearfix">
        <ul class="clearfix">
            <li>首页</li>
            <li>电影</li>
            <li>电视剧</li>
            <li>动漫</li>
            <li>综艺</li>
            <li>音乐</li>
            <li>MV</li>
            <li>视频</li>
            <li>短片</li>
            <li>公开课</li>
        </ul>
    </div>
    <div id="content"  >
        <ul class="clearfix">
           {% for movie in movies %}

               <li>
               <!--根据每个movie对象的属性 就是数据库的字段而定 -->
                   <a ><img src="{{ movie.image }}"/></a>
                    <h1 class="h1">{{ movie.name }}</h1>
                    <span class="tip">{{ movie.account}}</span>
                </li>


           {% endfor %}



        
        </ul>
    </div>
    <div id="pagebar">
    <!--a标签为get请求 传入num参数进行判断-->
        <a href="/movie/?num={{ pre_page }}">上一页</a>
        <a href="/movie/?num={{ next_page }}">下一页</a>
    </div>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 中,ListView 是一个通用视图类,用于显示包含多个对象的列表视图。要实现分页功能,可以结合 Django 的内置分页类Paginator和ListView来完成。 首先,导入相关的模块: ```python from django.core.paginator import Paginator from django.views.generic import ListView ``` 然后,定义你的 ListView 类,并设置需要显示的模型和模板: ```python class YourListView(ListView): model = YourModel template_name = 'your_template.html' paginate_by = 10 # 每页显示的对象数量 queryset = YourModel.objects.all() # 可以自定义查询集 ``` 在上述代码中,`YourListView` 继承自 `ListView`,并设置了 `model` 属性为你要显示的模型,`template_name` 属性为你的模板路径。`paginate_by` 属性用于设置每页显示的对象数量,这里设置为10。 接下来,在你的模板文件 `your_template.html` 中,可以通过以下方式渲染分页导航和对象列表: ```html {% for object in object_list %} <!-- 显示你的对象属性 --> {% endfor %} <!-- 显示分页导航 --> <div class="pagination"> <span class="step-links"> {% if page_obj.has_previous %} <a href="?page=1">« first</a> <a href="?page={{ page_obj.previous_page_number }}">previous</a> {% endif %} <span class="current-page">{{ page_obj.number }}</span> {% if page_obj.has_next %} <a href="?page={{ page_obj.next_page_number }}">next</a> <a href="?page={{ page_obj.paginator.num_pages }}">last »</a> {% endif %} </span> </div> ``` 在模板中,你可以使用 `object_list` 来访问当前页的对象列表,`page_obj` 包含与分页相关的信息,例如当前页码、是否有上一页/下一页等。 这样,你就可以在 Django 中使用 ListView 和 Paginator 来实现分页功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值