首页 > 其他分享 >分页器,cookie,session

分页器,cookie,session

时间:2023-05-05 22:12:04浏览次数:29  
标签:session 10 分页 count current book cookie page

推导分页的原理(你只需要明白原理即可,代码不需掌握)

# 分页:当数据量过多的时候,一页展示不完,我们分好多页来展示
几个参数:
1. 当前第几页
2. 总数据量有多少(从数据库中查询出来)
3. 每页展示20条(自己规定的)
4. 总数据量 / 每页展示的条数 = 总页数

# 把数据每页展示10条

展示多少也如何计算?

"""
	总数据量     每页展示的数据     总页数
	100   			10  		 10
	101				10			 11
	99				10		     10
	divmod(100, 10)
"""

    # book_list支持切片
    # book_list = models.Book.objects.all()[0:10] # 第一页的数据
    # book_list = models.Book.objects.all()[10:20] # 第二页的数据
    book_queryset = models.Book.objects.all()
    # 总数量
    all_count = book_queryset.count()
    # 每页展示多少条数据
    per_page_num = 10
    # 我让你查看第10页的数据
    # 我们要知道当前是第几页
    current_page = request.GET.get('page', 1)  # 当接收不到当前页码的时候,就默认是第一页

    current_page = int(current_page)
    print(current_page)
    start = (current_page - 1) * per_page_num
    end = current_page * per_page_num

    # 计算出总共多少页
    page_count, yushu = divmod(all_count, per_page_num)
    if yushu:
        page_count += 1  # 10


    page_html = ''
    # for i in range(1, page_count+1):
    xxx = current_page
    if current_page<6:
        current_page = 6
    for i in range(current_page-5, current_page+6):
        if i == xxx:
            page_html += '<li class="active"><a href="?page=%s">%s</a></li>' % (i, i)
        else:
            page_html += '<li ><a href="?page=%s">%s</a></li>' % (i, i)

    book_list = book_queryset[start:end]  # 第三页的数据
    return render(request, 'index.html', locals())

自定义分页器的使用

django自带分页器模块但是使用起来很麻烦 所以我们自己封装了一个
# 以后再实际项目中,会经常用到非django 的第三方工具,对于这种第三方工具,我们一般会在django中新建一个文件夹叫 utils,以后很多封装的代码都使用用面向对象的写法

只需要掌握使用方式即可
view界面
from utils.mypage import Pagination
def ab_pg_func(request):
    book_queryset = models.Books01.objects.all()
    from app01.utils.mypage import Pagination
    current_page = request.GET.get('page')
    
    page_obj = Pagination(current_page=current_page, all_count=book_queryset.count())
    page_queryset = book_queryset[page_obj.start:page_obj.end]
    
    return render(request, 'pgPage.html', locals())

html界面
{% for book_obj in page_queryset %}
   <p>{{ book_obj.title }}</p>
{% endfor %}
{{ page_obj.page_html|safe }}

django操作session

由于session是保存在服务端上面的数据 就应该有个地方能够存储
我们只需要执行数据库迁移命令即可 django会自动创建很多需要的表


django默认的session失效时间是14天


设置session	
	request.session['key'] = value
        1.生成一个随机字符串
        2.对value数据做加密处理 并在django_session表中存储
            随机字符串>>>加密数据
        3.将随机字符串也发送一份给客户端保存(cookie)
            sessionid:随机字符串
获取session	
	request.session.get('key')
        1.自动获取随机字符串
        2.去django_session表中根据随机字符串获取加密的数据
        3.自动解密数据并处理到request.sesion.get()中
    
补充说明
	1.可以设置过期时间		
 	2.存储session数据的位置也可以修改

标签:session,10,分页,count,current,book,cookie,page
From: https://www.cnblogs.com/whxx/p/17375511.html

相关文章

  • Django框架——ajax补充、多对多三种创建、序列化组件、批量操作数据、分页器
    ajax补充说明主要是针对回调函数args接收到的响应数据1.后端request.is_ajax() 用于判断当前请求是否由ajax发出2.后端返回的三板斧都会被args接收不再影响整个浏览器页面3.选择使用ajax做前后端交互的时候后端一般返回的都是字典数据 user_dict={'code':10000,'usernam......
  • vue 分页demo || vue分页插件
    方法一查看源码demo:点击预览方法二运用插件演示地址:点击预览查看源码:点击查阅......
  • JDK导致ActiveMQ、Kafka连接zookeeper失败:Session 0x0 for server 10.1.21.244/<unres
      最近在部署一套ActiveMQ集群时,使用zookeeper来实现,zookeeper启动了,在启动ActiveMQ时,抛出异常:    WARN|Session0x0forserver10.1.21.244/<unresolved>:2181,unexpectederror,closingsocketconnectionandattemptingreconnectjava.lang.IllegalArgu......
  • Django内置序列化组件(drf前身)和批量操作数据加上分页器
    目录一、django内置序列化组件(drf前身)这里的内置序列化组件,其实就是实现将后端数据,存放到字典中或是存放到列表中有序输出。方式一这里是我们用JsonResponse模块自己实现的代码'''前后端分离的项目视图函数只需要返回json格式的数据即可'''fromapp01importmodelsfr......
  • SqlSessionFactory、SqlSession、Druid之间的关系梳理
    SqlSessionFactory是什么?SqlSessionFactory 是Mybatis的核心接口之一,它是用于创建SqlSession对象。Mybatis的SqlSession对象是负责管理应用程序与数据库之间一组事务的机制,并为应用程序提供访问数据库的方法。SqlSession是线程不安全的对象,因此应始终使用它的请求/响......
  • 分页查询处理上百万数据 更新
    $count=Route::find()->where(['ro_visible'=>1])->count();//统计数据表数量$limit=100;$pagecount=ceil($count/$limit);//计算数据表的页数//事务执行$tr=Yii::$app->db->beginTransaction();try{for($page=1;$page<=$pagecount;$page++)......
  • 【HMS Core】获取用户信息接口,返回 session timeout
    【问题描述】集成华为账号服务,获取用户信息,调用相关接口一直返回sessiontimeout,参考链接:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/get-user-info-0000001060261938​ 【解决方案】1、如果是走的端测的比如OkHttpClient这种方式的是需......
  • 手拿把掐session、token、cookie
    发展以前的web很单一,就是用来浏览文档,服务器也不需要记住谁在某个时间段浏览了什么文档,每一次请求都是一个新的http协议,就是请求加响应,不需要记住是谁发了http请求。随着交互式web的兴起,比如需要登录的网站、在线购物等等,就面临了一个问题,就是要管理会话,必须要记住哪些人登录系......
  • 第四章 存储器管理 4.7 请求分页存储管理方式
    一、请求分页中的硬件支持  1.页表机制    ①状态位D:用于说明该页是否已调入内存,供程序访问时参考    ②访问位A:用于记录本页在一段时间内被访问的次数,或最近已有多长时间未被访问,提供给置换算法选择换出页面时参考    ③修改位M:用于表示该页在......
  • 基础-SQL-DQL-分页查询
    分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台都需要借助于数据库的分页操作。SELECT字段列表FROM表名LIMIT起始索引,查询记录数;注意事项:•起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。•分页查询是数据......