首页 > 其他分享 >- 推导分页的原理 - 使用分页类(器) - cookie和session的介绍、token - Django操作cookie - django操作session - CBV添加装饰器

- 推导分页的原理 - 使用分页类(器) - cookie和session的介绍、token - Django操作cookie - django操作session - CBV添加装饰器

时间:2023-08-09 17:01:21浏览次数:39  
标签:浏览器 分页 用户 django session cookie page

推导分页原理

分页:当我们要展示的数据特别多的时候,一页展示不完,这个时候我们需要把要展示的数据分成多页展示

分页中需要的几个参数:
1. 总数据有多少条
2. 每页展示多少条数据(自己规定的20)
3. 一共展示多少页
4. 总页数 = 总数据量 / 每页展示多少条数据
5. 当前第几页(前端传过去的)

总页数的计算

divmod()

分页类的使用

以后我们针对像分页类这种第三方工具,我们一般在Django中创建一个utils文件夹保存
from utils.mypage import Pagination
current_page =  request.GET.get('page')
try:
    current_page = int(current_page)
except Exception:
        current_page = 1

user_list  = models.UserInfo.objects.all()
all_count = user_list.count()
page_pbj = Pagination(current_page, all_count, per_page_num=10)

user_list = user_list[page_pbj.start:page_pbj.end]

page_html = page_pbj.page_html()
return render(request, 'index.html', locals())

cookie和session的介绍(重要)

HTTP协议的特性之一:无状态

背景信息:
1. 早期的时候一些网站都是静态网站,不需要登录,比如:新闻类、博客等
2. 随着技术的发展以及用户的要求,诞生了诸如支付宝、淘宝、京东等电商网站,这些网站就必须要求用户登录,如果不登录,上家怎么知道是谁买的东西? 登录的目的其实就是上架可以识别这个用户是谁
3. 诞生了保存用户状态的技术:cookie和session

"""
以登录功能为例:
分析cookie 的原理
你进入到一个淘宝网站,第一次肯定需要登录的,如果登录成功,淘宝网站不保存你的用户信息,意味着你下次再访问淘宝的时候,就需要从新登录,每一次访问淘宝的页面都需要登录,如果真的是这样,你想用吗?

如何解决上述问题?
这个时候就利用到了cookie,比如你第一次登录成功之后,django后端让浏览器把你的用户名和密码保存在浏览器中,你下次再访问淘宝页面的时候,浏览器会自动把它之前保存的用户名和密码一块提交到Django后端,Django后端每次拿到浏览器发过来的用户名和密码再次做验证.
上述的做法有没有什么问题? 有
数据保存在浏览器上面,很明显的问题是:数据不够安全

如何解决上述数据不安全的问题
其实是做了优化:把原本存在浏览器上的数据存到后端,就称之为是session

session就解决了cookie数据不安全的问题

session的原理:
以登录功能为例:
第一次登录成功之后,把用户信息保存在后端,其中,django默认是把用户信息保存在数据表中了 django_session表中了

1. 先生成一个随机字符串
2. 把用户的信息保存在django_session表中
session_key session_data expire_date
随机字符串1 用户信息1
随机字符串2 用户信息2
随机字符串3 用户信息3
随机字符串4 用户信息4
随机字符串5 用户信息5
3. Django后端会把随机字符串告诉浏览器保存起来
4. 以后用户每次访问页面的时候,浏览器每次都要把随机字符串提交过来,Django后端拿到随机字符串,去django_session表中查询数据,如果查到了,就说明以前登录成功了,如果查不到,就说明还没有登录

select * from django_session where session_key = ''

要求:每个学生都必须做到能够脱稿说出cookie和session的原理.
"""

# 如果都把用户信息保存在django_session表中,有没有其他问题?
最大的问题就是数据量一旦很大,查询就是致命的

# 怎么解决这个问题
需要用到token
token就是一个随机字符串------->保存着用户信息---------->字符串返回给前端------>每次都把token提交过来------>后端做验证.

加密和解密都是后端做的,前端只需要每次把这个串来回传递就行了


# jwt------------>三段式--------->

跟面试相关的:
1. 保存在浏览器上的数据都称之为是cookie
2. session是保存在服务端的
3. session的数据相对更加安全,cookie不够安全
4. session是基于cookie工作的? 对还是不对? 对
5. django让浏览器保存cookie,用户有权可以设置浏览器不保存
6. session离开cookie一定就不能工作了,对还是不对?

 

Django操作cookie

前端代码

{% block name %}
    <form action="" method="post">
        <div class="form-group">
            用户名:<input type="text" class="form-control name" name="username">
        </div>
        <div class="form-group">
            密码:<input type="password" class="form-control word" name="password">
        </div>
        <div class="form-group">
            <input type="submit" class=" reg btn btn-success btn-block" value="登录">
        </div>
    </form>
{% endblock %}

后端代码

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        login_obj = models.UserInfo.objects.filter(username=username).first()
        if username == login_obj.username and password == login_obj.password:
            obj = redirect('/pag_show/')
            obj.set_cookie('username', login_obj.username, max_age=5)
            return obj
        else:
            return HttpResponse('用户名或密码错误')
    return render(request, 'login.html', locals())

 

标签:浏览器,分页,用户,django,session,cookie,page
From: https://www.cnblogs.com/shanghaipudong/p/17617303.html

相关文章

  • 记录mysql排序字段有重复值,分页数据错乱问题
    引用http://vsalw.com/9768.html记录mysql排序字段有重复值,分页数据错乱问题,下面2个sql除了分页limit外,其他都一样,但是第三页的结果却包含部分第二页的数据。SELECT id, show_flag, sort, vote_title, img_url, max_option_count, vote_option_type, begin_time, ......
  • 推导分页的原理,分页类的使用,cookie和session的介绍(重要),Django操作cookie
    推导分页的原理分页:当我们要展示的数据特别多的时候,一页展示不完,这个时候我们需要把要展示的数据分成多页展示分页中需要的几个参数:1.总数据有多少条2.每页展示多少条数据(自己规定的20)3.一共展示多少页4.总页数=总数据量/每页展示多少条数据5.当前第几页(前端......
  • Django Session 配置
    SESSION_ENGINE="django.contrib.sessions.backends.db"SESSION_CACHE_ALIAS="default"SESSION_COOKIE_NAME="sid"SESSION_COOKIE_PATH="/"SESSION_COOKIE_DOMAIN=NoneSESSION_COOKIE_AGE=60*60*24*7*2SESSION_C......
  • 关于Tomcat返回URL出现jsessionId
    去掉java项目URL地址栏后面的";JEESESSIONID方法一:添加过滤器web.xml添加以下内容<filter><filter-name>jsessionid</filter-name><filter-class>com.myc.webpro.base.filter.DisableUrlSessionFilter</filter-class></filter><filter-......
  • 分页代码
    ResponseList<BookingAccountListVO>responseList=newResponseList();responseList.setTotal(listVOS.size());responseList.setPage(searchFilter.getPage());responseList.setSize(searchFilter.getSize());responseList.setTotalPage(responseList.getTotal(......
  • mp-分页查询的学习
    使用limit关键字进行分页步骤:创建配置类,创建一个拦截器,在尾部添加limit实现分页然后创建IPage对象,利用Page实现IPage<User>page=newPage<>(1,3); 自定义分页查询:自己在resources中创建自定义查询方法,进行如下配置随后在对应的接口中将User类改为IPage IPage<User>......
  • 具备有效期的sessionStorage存储
    具备有效期的sessionStorage存储类方式//具备有效期的sessionStorage存储-类方式。classSessionStorageWrapper{//存储数据到sessionStorage,记录下当前存储的时间。staticsetItem(key,value){try{constitem={value,time:Date.......
  • vue表格分页以及增删改查的实际应用
    效果:1:表格以及分页2:增加一条数据3:删除一条数据4:修改一条数据5:查询一条数据<template><divclass="tab-container"><divclass="filter-container"style="margin-bottom:20px"><el-inputmaxlength="40&quo......
  • cookiecutter python 项目模版工具
    cookiecutterpython项目模版工具,可以帮助我们快速基于模版生成python项目(当然也支持c项目)有不少python项目都是基于此工具的比如dbtadapter开发就基于此提供了方便的adapter生成dbtadapter参考模版 cookiecutter创建项目模版具体可以参考rongfengliang/mynpm-pac......
  • 表单,文件上传,cookie,session
    目录表单,表单验证文件包含,文件上传cookiesession1.表单,表单验证表单表单的基本使用php上传表单,当处理HTML表单时,PHP能把来自HTML页面中的表单元素自动变成可供PHP脚本使用。HTML中有一个专门用于提交数据的标签:,通过这个标签可以很容易的收集用户输入.form......