首页 > 其他分享 >分页和cookie

分页和cookie

时间:2023-05-07 19:57:02浏览次数:33  
标签:obj 分页 current session cookie 浏览器 page

分页和cookie

分页

# 当数据量过多的时候,一页展示不完,就需要分页
参数:
	1. 当前页
	2. 总数据
    3. 每页数据
    4. 总页数
def index(request):
    book_obj = models.Book.objects.all()  # 实例化一个对象
    count = book_obj.count()  # 总数量
    per_page_num = 5  # 每页展示多少条数据
    current_page = request.GET.get('page', 1)  # 获取前端返回的值
    current_page = int(current_page)
    start = (current_page - 1) * per_page_num
    end = start + per_page_num
    page_count, yushu = divmod(count, per_page_num)  # 总页数
    if yushu:
        page_count += 1

    page_html = ''
    temp = current_page
    if current_page<4:  # 判断下限
        current_page = 4
    if current_page>(page_count-3):  # 判断上限
        current_page=(page_count-3)
    for i in range(current_page-3, current_page + 4):
        if i == temp:
            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_lis = book_obj[start:end]
    return render(request, 'index.html', locals())

分页类的使用

# 以后再实际项目中,会经常用到非django 的第三方工具,对于这种第三方工具,我们一般会在django中新建一个文件夹叫 utils,以后很多封装的代码都使用用面向对象的写法
from utils.mypage import Pagination
from django.conf import settings  # 推荐这样优先查找本项目下的settings,找不到去源码找
# from Django05 import settings  # 只能获取这个文件下的settings的数据
current_page = request.GET.get('page', 1)
book_obj = models.Book.objects.all()
count = book_obj.count()
per_page_num = settings.PER_PAGE_NUM
page_obj = Pagination(current_page, count, per_page_num, 7)
book_lis = book_obj[page_obj.start:page_obj.end]
page_html = page_obj.page_html()

cookie和session的简单介绍

介绍一些背景信息
"""
	1. 网站它是不用保存用户的信息,最早期的时候,网站都是一些静态网站
		eg:新闻网站  博客
	2. 随着技术发展,诞生了很多需要登录的网站
    	eg: 淘宝  京东  支付宝...
    	登录:解决了在网站中,网站可以识别出你是谁
    	
  	以登录为例,当用户第一次登录网站的时候,用户输入用户名和密码,如果不保存下来,拿用户就每次都需要登录,意味着每次都要输入用户名和密码、
  	
  	针对以上的问题,如何解决的嫩?
  	利用到了cookie,当用户第一次登录成功网站的时候,服务端告诉浏览器把用户名和密码都给用户的浏览器,然后,用户浏览器把用户名和密码保存在本地,之后,用户在每次访问网站的时候,会自动把之前保存的用户名和密码都传给服务端,服务端接收浏览器传过来的用户名和密码在进行验证.
  	
  	针对以上方案有没有问题? 肯定是有的,把用户名和密码保存在浏览器本地最大的问题就是不安全!!!
  	
  	如何优化一下上述不安全问题?
  	session的诞生, session是把数据保存在服务端的,但是,session会生成一个随机字符串,在服务端做随机字符串和用户信息的对应关系
  	就是把用户信息保存在数据表中了,它是如何保存的?
        随机字符串1:用户信息1
        随机字符串2:用户信息2
        随机字符串3:用户信息3
  	
  	session做的事情:
  		1. 生成一个随机字符串
  		2. 把随机字符串和用户信息的对应关系保存在数据表中
  		3. 把随机字符串返回给浏览器,让浏览器把随机字符串保存下来
  	之后,用户在访问网站的时候,会把随机字符串一块提交过来,服务端拿着随机字符串去数据表中查询,如果查到了,说明登录了,如果查不到,就说明还没有登录
  		
  		select * from t where key = ''
  	
  	背景信息:cookie在浏览器上是可以选择不保存的
  	面试题1:session是基于cookie工作的?对,为什么?
  	面试题2:如果浏览器把保存cookie的开关关掉了,说白了就是不能保存用户信息了,问:session一定不能用了?对于不对?不对,
  	
  	
  	session把数据保存在数据表里了,但是,当数据量特备大的时候,查询效率肯定会降低
  	
  	
  	token:就是一个算法
"""

1. cookie
	# 就是把数据保存在浏览器上的数据都可以称之为cookie
    cookie一般保存的形式是:k:v键值对
2. session
	# session把数据保存在服务端

关于cookie和session的面试题:
	1. cookie把数据保存在浏览器
    2. session把数据保存在服务端
    3. session保存的数据更加安全
3. token
4. jwt------------>三段式信息-------------》加密得到的

Cookie的操作

# 使用Django操作cookie
return HttpResponse
return redirect
return render


obj = HttpResponse
return obj

obj = redirect
return obj

obj = render
return obj

# 如果你想操作cookie,必须使用obj对象

1. 设置cookie
obj.set_cookie('key', 'value')
2. 获取cookie
print(request.COOKIES.get("key"))
3. 还可以给cookie设置一个过期时间
	max_age:
    expires:是IE浏览器
    # 都是用来设置过期时间的
4. path
5. 前端也可以获取cookie和session
localstorage
sessionstorage
6. 删除Cookie(退出功能,注销功能)
	res.delete_cookie

标签:obj,分页,current,session,cookie,浏览器,page
From: https://www.cnblogs.com/juzixiong/p/17379958.html

相关文章

  • 再谈elasticsearch下的深度分页
    Elasticsearch在业务系统中使用也越来越广,一些开发规范也需要慢慢重视起来。我们知道在关系型数据库中,我们被告知要注意甚至被明确禁止使用深度分页,在es中也应该尽量避免使用深度分页。es提供的分页查询是通过from和size参数来完成,from默认是0,size默认为10,比如:{"from":100000,......
  • Django高级之-分页器
    目录分页推导queryset对象的切片参数数据总页数获取循环看需要展示几个li推导分页的原理代码终极大法自定义分页器封装代码自定义分页器使用后端前端分页推导分页的几个参数:当前第几页总数据量有多少(从数据库中查询出来)每页展示20条(自己规定的)总数据量/每页展示的条数......
  • Django框架——cookie与session简介、django操作cookie与session、django中间件
    cookie与session简介"""回忆:HTTP协议四大特性 1.基于请求响应 2.基于TCP、IP作用于应用层之上的协议 3.无状态 不保存客户端的状态 4.无连接"""最开始的网站都不需要用户注册所有人来访问获取到的数据都是一样的随着互联网的发展很多网站需要指定当前用户的状态cook......
  • Cookie与Session CBV中加装饰器
    目录一.会话跟踪技术什么是会话跟踪?我们需要先了解一下什么是会话。可以把会话理解为客户端和服务端之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086就是服务端。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话......
  • 前端自定义分页
    <el-tablesize="mini"stripeborderfitheight="406px"highlight-current-row:header-cell-style="{background:'#F0F3F8'}":data="historyResearch......
  • CTFhub-HTTP-Cookie
    题目环境: 开启题目: 打开题目环境:弹出题目链接:http://challenge-ca25cb8adb30a42b.sandbox.ctfhub.com:10800 访问弹出的链接:翻译出来是:您好客人。只有管理员才能获取标志。没有啥有用的信息 再尝试用burpsuit抓包尝试,看可不可以,找到有用的信息, 将抓到的数据发送到......
  • cookie与session
    目录一、cookie与session简介二、django操作cookie三、django操作session一、cookie与session简介知识点回顾回忆:HTTP协议四大特性1.基于请求响应 2.基于TCP、IP作用于应用层之上的协议3.无状态不保存客户端的状态4.无连接需求变化分析最开始的网站都不需要用户注......
  • django分页器
    目录一、分页器思路二、自定义分页器的使用一、分页器思路分页器主要听处理逻辑代码最后很简单推导流程 1.queryset支持切片操作(正数) 2.研究各个参数之间的数学关系 每页固定展示多少条数据、起始位置、终止位置 3.自定义页码参数 current_page=request.GET......
  • django的web项目中重定向页面时的部分信息传输——以删除含有分页的列表记录为例
    问题:在管理系统界面往往是有分页的,初次编写列表的删除功能时很可能会出现删完之后页面跳转到第一页的问题,或者筛选完之后删除某一项结果删完之后跳转到未筛选页面。与实际分页管理的效果大庭相径。解决思路:1.起初只遇到了分页的情况,解决方法很简单,在删除按钮的href中直接传值,例......
  • 在Winform分页控件中集成保存用户列表显示字段及宽度调整设置
    在Winform的分页控件里面,我们提供了很多丰富的功能,如常规分页,中文转义、导出Excel、导出PDF等,基于DevExpress的样式的分页控件,我们在其上面做了不少封装,以便更好的使用,其中就包括集成保存用户列表显示字段及宽度调整设置。本篇随笔介绍这个实现的过程,通过在当前程序中序列化方式存......