【python之路45】tornado的用法 (三)

一、cookie用法补充

1、cookie的应用场景

浏览器端保存的键值对,每次访问都会携带

1)用户验证,多长时间内免登陆

2)后台管理,左侧隐藏,可以把隐藏的键值对保存在cookie中

3)每页显示多少条数据也可以保存在cookie中

设置cookie的方法:

1)tornado在后台进行设置

self.cookies  #获取所有的cookie

self.setcookie("k1","999") #设置cookie

self.getcookie("k1") #获取某个cookie

2)浏览器端使用javascript进行设置或获取

document.cookie  //获取所有cookie,返回的是字符串格式:"k1=9999",如果想获取k1的值,则通过处理字符串

document.cookie = "k2=666"  //设置cookie,增加键值对 "k2=666"

//重新获取下

document.cookie   //结果:"k1=9999; k2=666"

2、cookie的方法

#!/usr/bin/env python
# -*- coding:utf-8 -*-


import tornado.ioloop
import tornado.web
import time

class MainHandler(tornado.web.RequestHandler):
def get(self):
#self.write("Hello, world")
self.render('index.html') #因为配置了全局文件路径,所以s1.html表示template/s1.html


class ManagerHandler(tornado.web.RequestHandler):
def get(self,*args,**kwargs):
#co = self.get_cookie("auth")
co = self.get_secure_cookie("auth") #返回b'wuzheng',是字节类型
co1 = str(co,encoding='utf-8') #转化为字符串类型
print(co1)
if co1 == "wuzheng":
self.render('manager.html')
else:
self.redirect("\login")


class LogInHandler(tornado.web.RequestHandler):
def get(self,*args,**kwargs):
self.render('login.html',status="")
def post(self,*args,**kwargs):
username = self.get_argument("username",None)
password = self.get_argument("password",None)
if username == "sunshuhai" and password == "123":
#self.set_cookie("auth","1")
#self.set_cookie("auth,","wuzheng",expires_days=7) #expires_days表示7天后cookie过期

#r = time.time() + 10
#self.set_cookie("auth,","wuzheng",expires=r) #表示10秒后过期

#self.set_cookie("auth,","wuzheng",expires=time.time()) #表示立即过期
self.set_secure_cookie("auth","wuzheng")
self.render("index.html")
else:
self.render('login.html',status = "用户名密码错误!")


class LogOutHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.set_cookie("auth","0") #将cookie中auth的值改掉
self.redirect("/login")
settings = {
'template_path':'views', #配置全局文件路径为:template
'cookie_secret':'qerqrdfd12dds',
}
#路由映射
application = tornado.web.Application([
(r"/index", MainHandler),
(r"/manager",ManagerHandler),
(r"/login",LogInHandler),
(r"/logout",LogOutHandler),
],**settings) #**settings是让配置生效

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

猜你喜欢

转载自www.cnblogs.com/sunshuhai/p/9349678.html