用户登录, 未登录不能访问指定页面
基于cookie实现
保存在用户浏览器端的键值对, 向服务端发请求时会自动携带
def login(request):
data = redirect('...')
data.set_cookie()
request.COOKIES.get('xx')
return data
cookie的三个参数:
key,value='',max_age=None
应用场景:
- 用户认证
- 投票
- 每页默认显示多少数据
基于session实现(推荐)
依赖cookie
是一种存储数据的方式, 依赖于cookie, 实现本质:
用户向服务端发送请求, 服务端做两件事:
生成随机字符串;
为此用户开辟一个独立的空间来存放当前用户独有的值.
在空间中如何设置值:
request.session['x1'] = 123
request.session['x2'] = 456
在空间中取值:
request.session['x2'] (没有数据会报错)
request.session.get('x2')
视图函数中的业务操作处理完毕, 给用户响应, 在响应时会将随机字符串存储到用户浏览器的cookie中.
应用场景:
- 用户认证
- 短信验证过期
- 权限管理
session中数据是根据用户相互隔离的
通过js设置cookie
document.cookie = 'k1=wy;path=/'
$.cookie('k1','wy222',{path:'/'})
path不同会导致设置不同
path的作用:
-
/ , 当前网站中所有的URL都能读取到此值.
-
“”,只能在当前页面访问的到此数据.
-
/index/ ,只能在/index/xxx的网页中查看.
cookie和session的区别
cookie是存储在客户端浏览器上的键值对,发送请求时浏览器会自动携带. session是一种存储数据方式,基于cookie实现,将数据存储在服务端(django默认存储到数据库).其本质是:
用户向服务端发送请求,服务端做两件事:
- 生成随机字符串;
- 为此用户开辟一个独立的空间来存放当前用户独有的值.
django和session相关的配置
SESSION_COOKIE_NAME = "sessionid"
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_PATH = "/"
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_AGE = 1209600
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_SAVE_EVERY_REQUEST = False
...
学Python的过程中,往往因为没有资料或者没人指导从而导致自己不想学下去, 因此特意准备了个QQ群991032883,可以获取源码,解答,学习路线、开发工具等给大家免费使用!
...
django中的session如何设置过期时间
SESSION_COOKIE_AGE = 1209600
django的session默认存储在数据库, 可以放在其他地方吗
- 小系统: 默认放在数据库
- 大系统: 缓存(redis)
SESSION_ENGINE ='django.contrib.sessions.backends.file'
SESSION_FILE_PATH = '/sssss/'
缓存(内存)
SESSION_ENGINE ='django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
CACHES = {'default':
{'BACKEND':'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
}
}
缓存(redis)
SESSION_ENGINE ='django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
CACHES = {"default":
{"BACKEND":"django_redis.cache.RedisCache",
"LOCATION":"redis://127.0.0.1:6379",
"OPTIONS":
{"CLIENT_CLASS":"django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS":
{"max_connections": 100}
}
}
}
操作session
request.session['x1'] = 123
request.session['x2'] = 456
request.session['xx'] (取不到值时报错)
request.session.get('xx')
del request.session['xx']
request.session.keys()
request.session.values()
request.session.items()
request.session.set_expiry(value)
request.session.session_key
tips
orm字段中的verbose_name
目前当注释用
以后在model form中和form中用
路由系统中加入终止符$防止url截取
用户名和密码监测
XXXX.first()
XXXX.exists()
模板查找顺序
先:根目录templates
后:根据app注册顺序去每个app的template中找
Original: https://blog.csdn.net/sehun_sx/article/details/123830133
Author: sehun_sx
Title: Python学习,cookie和session
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737181/
转载文章受原作者版权保护。转载请注明原作者出处!