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)的更多相关文章

  1. Django基础cookie和session

    Django基础cookie和session 1.会话跟踪 ​ 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...

  2. Django 基础笔记补充

    1.目录文件 django-admin.py startproject mydj cd mydj python manage.py startapp myapp   后生成目录: mydj/ ├── ...

  3. Django基础笔记

    1.准备工作 .虚拟环境设置 python3 pip install virtualenv python -m venv env(虚拟环境文件名) env\Scripts\activate pip i ...

  4. python笔记-19 javascript补充、web框架、django基础

    一.JavaScript的补充 1 正则表达式 1.1 test的使用 test 测试是否符合条件 返回true or false 1.2 exec的使用 exec 从字符串中截取匹配的字符 1.3 ...

  5. Django学习笔记(基础篇)

    Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html

  6. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  7. 【笔记】Django基础(一)

    ---恢复内容开始--- [笔记]Django基础(一) oldboy Django  一 关于Python框架的本质 1. HTTP协议消息的格式: 请求(request) 请求方法 路径 HTTP ...

  8. day 62.3 Django基础八之cookie和session

    Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...

  9. day 73 Django基础八之cookie和session

      Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...

  10. Django基础六之cookie和session

    Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...

随机推荐

  1. MySQL5.6 & 5.7 配置 SSL

    mysql5.7上开启并配置ssl [root@mysqlmaster01 bin]# ./mysql_ssl_rsa_setup --datadir=/data/mysql_data1/ --use ...

  2. 使用 Traefik 代理 UDP 服务

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488836&idx=1&sn=740f9aac ...

  3. 如何调试 Docker

    开启 Debug 模式 在 dockerd 配置文件 daemon.json(默认位于 /etc/docker/)中添加 { "debug": true } 重启守护进程. $ s ...

  4. python中限定导入的子模块

    如果包定义文件__init__.py中存在一个叫做__all__的列表变量,那么在使用from package import *的时候就把这个列表中的所有名字作为要导入的模块名. 例如在example ...

  5. 02_快捷键及常用DOS命令

    快捷键 一. 电脑快捷键 Ctrl + C:复制 Ctrl+ V:粘贴 Ctrl+ A:全选 Ctrl+ S:保存 Ctrl+ Z:撤销 Ctrl+ X:剪切 Alt + F4:关闭窗口 Shift ...

  6. sql limit函数

    select * from <表名> order by <列名> desc limit <第几位数>; select * from villa_info order ...

  7. display:block 和display:inline-block的区别和用法

    1).块状元素:(div,p,form,ul,ol,li) ,独占一行,默认情况width为100% 2).行内块状元素:(span,img,a),不会独占一行,相邻的元素一直排在同一行,排满了才会换 ...

  8. win7升级到win10系统后,node13升级为node16,node版本node-sass版本与不匹配,导致出现npm ERR! ERESOLVE could not resolve

    1. 错误npm ERR! code ERESOLVE 系统从win7升级到win10,之前的node版本是13.14.0,现在版本是16.17.1.正常的vue程序无法正常运行.从网上查询得知&qu ...

  9. AlexNet-文献阅读笔记

    论文介绍 ImageNet Classification with Deep Convolutional Neural Networks- Alex Krizhevsky, Ilya Sutskeve ...

  10. 记一次 .NET 某企业OA后端服务 卡死分析

    一:背景 1.讲故事 前段时间有位朋友微信找到我,说他生产机器上的 Console 服务看起来像是卡死了,也不生成日志,对方也收不到我的httpclient请求,不知道程序出现什么情况了,特来寻求帮助 ...