1.session是个啥?

  和cookie的本质区别是:cookie是保存在客户端的键值对,而session是保存在服务器端的键值对。

  而基于Cookie做用户验证时并不适合将敏感信息放在cookie中。

2.session工作原理:

  以登录为例

  当用户认证成功后,服务器端会生成一段随机字符串,然后将这段字符串保存在客户端cookie中,在服务器端以键值对的形式同样保存这段随机字符串,

  {"随机字符串":{相关信息}} 

3.简单实例:

views:

 1 user_info={
 2     'user1':{'pwd':'123'},
 3     'user2':{'pwd':'321'},
 4 }
 5 def login(request):
 6     if request.method=='GET':
 7         return render(request,'login.html')
 8     if request.method=='POST':
 9         u=request.POST.get('user')
10         p=request.POST.get('pwd')
11         dic=user_info.get(u)
12         if dic and dic['pwd']==p:
13             request.session['username']=u
14             request.session['is_login']=True
15             return redirect('/index/')
16         else:
17             return render(request, 'login.html')
18 def index(request):
19     if request.session('islogin',None):   #request.session 拿到了随机字符串,
20                                           #根据字符串在拿到相关信息
21         return HttpResponse('ok')
22     else:
23         return HttpResponse('invalid')

HTML:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Login</title>
 6 </head>
 7 <body>
 8     <div>
 9         <form action="/login/" method="POST">
10             <input name="user" type="text" placeholder="用户名"/>
11             <input name="pwd" type="password" placeholder="密码"/>
12             <input type="submit" value="登录"/>
13         </form>
14         {{ error_msg }}
15     </div>
16 </body>
17 </html>

View Code

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>index</title>
 6 </head>
 7 <body>
 8     {{ username }}
 9 </body>
10 </html>

View Code

  在写好配置后,还有一步关键步骤:

  在Terminal里:

1 python manage.py makemigrations
2 python manage.py migrate

在chorm里可以查看到:

4.session的配置操作:

1 SESSION_COOKIE_NAME='sessionid'                #session的cookie保存在浏览器上的key,即:session=随机字符串
2 SESSION_COOKIE_PATH='/'                        #session的cookie保存路径
3 SESSION_COOKIE_DOMAIN=None                     #session的cookie保存域名
4 SESSION_COOKIE_SECURE=False                    #是否Https传输cookie
5 SESSION_COOKIE_HTTPONLY=True                   #是否只支持http传输
6 SESSION_COOKIE_AGE=1209600                     #session的cookie失效日期(默认两周)
7 SESSION_COOKIE_AT_BROWER_CLOSE=False           #关闭浏览器session的cookie是否失效
8 SESSION_COOKIE_SAVE_EVERY_REQUEST=False        #是否每次请求都保存session,修改默认值为True之后保存

以上配置的值均为默认值。

  

 

转载于:https://www.cnblogs.com/SunsetSunrise/p/7702190.html

Django之session相关推荐

  1. Django(part37)--session

    学习笔记,仅供参考,有错必究 文章目录 cookies和session session Django启用Session session的基本操作 session 示例 cookies和session ...

  2. 【python】Django设置SESSION超时时间没有生效?

    按手册和网上的方法在settings.py中设置"SESSION_COOKIE_AGE" 和 "SESSION_EXPIRE_AT_BROWSER_CLOSE" ...

  3. Django中Session的使用

    文章目录 0. 前言 1. 启用Session 2. 设置Session引擎 2.1 基于数据库的Session 2.2 基于Cache的Session 2.3 基于文件系统的Session 2.4 ...

  4. django:session会话控制

    一,session 当用户第一次访问某网站时,网站服务器就在内存中开辟一块空间来创建session对象,用于在"无状态"的HTTP的长会话中存储用户信息.能使用户在同一浏览器的不同 ...

  5. django 之 session

    设置session request.session['username' ] = user  # user 是从数据库获取到的值 username 是写在session中的key的值 用session ...

  6. django Cookie,Session和自定义分页

    因为HTTP协议是无状态的,每发送完请求后都会断开链接,所以有时为了保存 状态用到cookie和session cookie 是保存在浏览器上的,session是保存在后台的 cookie相当于一个口 ...

  7. Django之session验证的三种姿势

    一.什么是session session是保存在服务端的键值对,Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中. 二.FVB中 ...

  8. Django中session和cookie简单的使用

    一.简单的理解 session和cookie是request下的两个对象,操作他们的值就是在操作字典,设置他们的属性就是调用方法. 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整 ...

  9. dj鲜生-35-设置django的session使用redis来存储

    session的回顾 使用redis存储session 一 安装 pip install django-redis 二 配置缓存连接redis # Django的缓存配置 CACHES = {&quo ...

  10. python 使用session_Python(Django之Session详解及使用)

    Cookie: 1.保存在用户浏览器中(键值对). 2.不应该存放敏感信息,如用户账户密码之类的. Session: 2.保存在服务器的数据库和内存中(也给用户浏览器的Cookie中储存了对应的键值对 ...

最新文章

  1. 欧盟要统一充电接口为USB-C,苹果急了:这是在扼杀创新
  2. 开发日记-20190911 关键词 C代码实现shell ftw命令
  3. AJAX并不神秘:揭密各种AJAX控件和类库
  4. HttpClient 发送 HTTP、HTTPS 请求的简单封装
  5. 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
  6. 如何使用GitLab和Rancher构建CI/CD流水线–Part 1
  7. nginx服务器能ping通,访问不了的解决办法
  8. HDU 4069 Squiggly Sudoku
  9. 多频电磁感应仪GEM-2介绍
  10. Linux操作系统思维导图
  11. win7用计算机名无法访问局域网,Win7局域网不能访问的解决方法
  12. ARX——一种开源的数据匿名软件的介绍
  13. 昌航程序设计竞赛初赛(周五晚19点)
  14. 口胡平衡树splay
  15. Obsolete属性
  16. 先锋建筑设计师——庞嵚作品
  17. Petya and Inequiations 题解
  18. java人品计算器,‎App Store 上的“围棋死活大全”
  19. 批处理、分时、实时各个操作系统特点
  20. Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

热门文章

  1. Linux 第五天: (08月01日) Linux用户组管理
  2. javascript继承的实现
  3. Draw Circle 沿着圆运动~~
  4. GVRP和VTP比较
  5. .Net面试题(1)
  6. 在 Swift 中调用 OC 代码
  7. JS编程建议——7:小心保留字的误用
  8. Oracle RAC禁用DRM
  9. 使用HTML5的classList属性操作CSS类
  10. 《中国人工智能学会通讯》——10.22 能源互联网时代