- cookie
- # views.py
- def login(request): # 登 6 页面
- if request.mothod == 'POST':
- name = request.POST.get('user')
- pwd = request.POST.get('pwd')
- if name == 'yuan' and pwd == '123':
- ret = redirect('/index/')
- ret.set_cookie('key','value') # 登 6 成功后, 给 cookie 赋一组键值对
- # ret.set_cookie('username','yuan',max_age=10,expires=datetime.datetime.utcnow()+datetime.timedelta(days=3))
- # max_age 设置 cookie 过期时间为 10 秒, expires 设置 cookie 过期时间为 3 天 (针对不同浏览器, 需要同时设置这两个值, 并设置为一样)
- return ret
- def index(request):
- # if request.COOKIES.get('key',None): # 判断用户是否有 cookie 设置的 key
- if request.COOKIES.get('key',None)=='value': # 获取 cookie 的值, 判断 key 是否为 value,None 代表取不到时以 None 代替, 这样不报错
- return render(request,'index.html',locals())
- else:
- return redirect('/login/')
- session(django 的 session 默认存储在数据表中)
- # views.py
- def login(request): # 登 6 页面
- if request.mothod == 'POST':
- name = request.POST.get('user')
- pwd = request.POST.get('pwd')
- if name == 'yuan' and pwd == '123':
- request.session['is_login']=True # 创建两个 session
- request.session['user']=name
- return redirect('/index/')
- def index(request):
- if request.session.get('is_login',None): # 获取 session 的值, 判断 is_login 是否有值
- name = request.session.get('user')
- return render(request,'index.html',locals())
- else:
- return redirect('/login/')
下面我们再来最后的总结一下 cookie 和 session 的知识点
一, 操作 Cookie
获取 cookie:request.COOKIES[key]
设置 cookie:response.set_cookie(key,value)
由于 cookie 保存在客户端的电脑上, 所以, jquery 也可以操作 cookie.
- <script src='http://830909.blog.51cto.com/static/js/jquery.cookie.js'></script>
- $.cookie("list_pager_num", 30,{ path: '/' });
二, 操作 Session(session 默认在服务器端保存 15 天)
获取 session:request.session[key]
设置 session:reqeust.session[key] = value
删除 session:del request.session[key]
- (这个删除其实就是把数据库的 session_data 更新为一个其他的值了, 并没有立即删除)
- request.session.set_expiry(value)
* 如果 value 是个整数, session 会在此秒数后失效.
* 如果 value 是个 datatime 或 timedelta,session 就会在这个时间后失效.
* 如果 value 是 0, 用户关闭浏览器 session 就会失效.
* 如果 value 是 None,session 会依赖全局 session 失效策略.
来源: http://www.bubuko.com/infodetail-2763048.html