Django基础笔记5(Session)
Session
cookie:保存在客户端浏览器上的键值对
session:保存在服务器端的数据
保持会话
def index(req):
v = req.session.get('username')
if v:
return render(req, './App4/index.html', {'user': v})
else:
return render(req, './App4/login.html', {'msg': ''})
def login(request):
if request.method == 'GET':
return render(request, './App4/login.html', {'msg': ''})
else:
u = request.POST.get('username') # 生成随机串{'username':'lhh'}
p = request.POST.get('password') # 通过session并保存
key = {'username': u, 'password': p}
obj = models.User.objects.filter(**key).first()
if obj:
request.session['username'] = u
request.session['password'] = p
return redirect('./index/')
else:
return render(request, './App4/login.html', {'msg': '用户名或密码错误'})
#设置
def login(request):
if request.method == 'GET':
return render(request, 'App5/login.html')
else:
user = request.POST.get('uname')
pwd = request.POST.get('pwd')
gender = request.POST.get('gender')
week = request.POST.get('week')
if gender == '1':
obj = models.Boy.objects.filter(**{'name': user, 'passwd': pwd}).first()
else:
obj = models.Girl.objects.filter(**{'name': user, 'passwd': pwd}).first()
if obj:
user_info = {'user_id': obj.id, 'gender': gender, 'uname': user, 'nickname': obj.nickname}
request.session['user_info'] = user_info
return redirect('App5/index.html')
#使用
def index(request):
v = request.session.get('user_info')
if not v:
return redirect('./App5/login.html')
else:
gender = v.get('gender')
name = v.get('nickname')
if gender == '1':
user_list = models.Girl.objects.all()
else:
user_list = models.Boy.objects.all()
return render(request, './App5/index.html', {'userList': user_list, 'name': name})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<!--render将request也会传过来,通过request也可以调用session-->
<h2>当前用户:{{ request.session.user_info.nickname }}</h2>
<ul>
{% for i in userList %}
<li> {{ i.nickname }}</li>
{% endfor %}
</ul>
</body>
</html>
session相关操作:
#与字典相似
request.session.keys()
request.session.values()
request.session.items()
request.session.session_key #用户的随机字符串
request.session.delete('session_key') #删除当前用户的session
request.session.exists('session_key') #检查当前用户的随机字符串是否在数据库中
request.session.flush() #删除所有session
request.session.clear_expired() #清除过期的session
request.session.set_expiry(value) #设置超时时间,默认两周,单位(秒)
session相关设置:
| 参数 | 意义 | 默认 |
|---|---|---|
| SESSION_COOKIE_NAME | 保存在浏览器中的key | ‘sessionid’ |
| SESSION_COOKIE_PATH | session的cookie路径 | “\” |
| SESSION_COOKIE_DOMAIN | session的cookie保存的域名 | None |
| SESSION_COOKIE_SECURE | 是否使用Https传输cookie | False |
| SESSION_COOKIE_HTTPONLY | 是否仅使用Http传输cookie | True |
| SESSION_EXPIRE_AT_BROWSER_CLOSE | 字面意思 | |
| SESSION_SAVE_EVERY_REQUEST | 是否每次刷新浏览器都更新默认时间 | False |
上述参数均可在setting文件中更改设置
setting.py
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_SAVE_EVERY_REQUEST = False
#默认
SESSION_ENGINE='django.contrib.sessions.backends.db' #session引擎设置 表示将session_key放入数据库
SESSION_ENGINE= 'django.contrib.sessions.backends.file'#将session存入文件
SESSION_FILE_PATH='\XX\XX'
#
SESSION_ENGINE='django.contrib.sessions.backends.cache'#放缓存
SESSION_ENGINE='django.contrib.sessions.backends.cache_db'#缓存+数据库,缓存找不着就找数据库
Django基础笔记5(Session)的更多相关文章
- Django基础cookie和session
Django基础cookie和session 1.会话跟踪 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...
- Django 基础笔记补充
1.目录文件 django-admin.py startproject mydj cd mydj python manage.py startapp myapp 后生成目录: mydj/ ├── ...
- Django基础笔记
1.准备工作 .虚拟环境设置 python3 pip install virtualenv python -m venv env(虚拟环境文件名) env\Scripts\activate pip i ...
- python笔记-19 javascript补充、web框架、django基础
一.JavaScript的补充 1 正则表达式 1.1 test的使用 test 测试是否符合条件 返回true or false 1.2 exec的使用 exec 从字符串中截取匹配的字符 1.3 ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- 【笔记】Django基础(一)
---恢复内容开始--- [笔记]Django基础(一) oldboy Django 一 关于Python框架的本质 1. HTTP协议消息的格式: 请求(request) 请求方法 路径 HTTP ...
- day 62.3 Django基础八之cookie和session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...
- day 73 Django基础八之cookie和session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...
- Django基础六之cookie和session
Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...
随机推荐
- windows下 Rust 环境配置
搭建 Visual Studio Code 开发环境 首先,需要安装最新版的 Rust 编译工具和 Visual Studio Code. Rust 编译工具:https://www.rust-lan ...
- 消息队列MQ核心原理全面总结(11大必会原理)
消息队列已经逐渐成为分布式应用场景.内部通信.以及秒杀等高并发业务场景的核心手段,它具有低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. 无论是 RabbitMQ.RocketMQ.Act ...
- 2.云原生之Docker容器环境安装实践
转载自:https://www.bilibili.com/read/cv15181036/?from=readlist 官方一键安装脚本 补充时间:[2020年4月22日 11:00:59] 一键安装 ...
- 第五章:Admin管理后台 - 3:Admin文档生成器
Django的admindocs应用可以从模型.视图.模板标签等地方获得文档内容. 一.概览 要激活admindocs,请按下面的步骤操作: 在INSTALLED_APPS内添加django.cont ...
- shell下cat EOF中变量$处理
在使用cat EOF中出现$变量通常会直接被执行,显示执行的结果.若想保持$变量不变需要使用 \ 符进行注释 [root@localhost ~]# cat >> aa.txt <& ...
- python基础作业2
目录 编写一个用户认证装饰器 利用有参装饰器编写多种用户登录校验策略 利用递归函数依次打印列表中每一个数据值 获取用户权限并校验用户登录 编写一个用户认证装饰器 """ ...
- Day3 最短路 最小生成树 拓扑排序
Day3 最短路 最小生成树 拓扑排序 (一)最短路 一.多源最短路 从任意点出发到任意点的最短路 1. Floyd \(O(n^3)\) for(int k=1;k<=n;k++) for(i ...
- react 可视化编辑器1
可视化编辑器1 前言 前面我们学习低代码,例如百度的低代码平台 amis,也有相应的可视化编辑器,通过拖拽的方式生成配置文件.就像这样 笔者自己也有类似需求:比如中台有个归档需求,通过选择一些配置让后 ...
- github使用Webhooks实现自动化部署
参考: https://blog.csdn.net/u013764814/article/details/85240752 -------------------------------------- ...
- JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
1.线程和进程 进程:一个程序,微信.qq...程序的集合.(一个进程包含多个线程,至少包含一个线程.java默认有两个线程:主线程(main).垃圾回收线程(GC) 线程:runnable.thre ...