tornado 中没有session功能,需要我们自己实现。

目录:

settings:

settings = {
'template_path': 'templates',
'static': 'static'
}

home:

#!/usr/bin/env python
# Version = 3.5.2
# __auth__ = '无名小妖'
import tornado.web
import hashlib
import time container = {} def md5():
m = hashlib.md5()
m.update(bytes(str(time.time()), encoding='utf8'))
return m.hexdigest() class Session: def __init__(self, handler):
random_str = handler.get_cookie('__session_id__')
if random_str:
if random_str in container:
self.r_str = random_str
else:
random_str = md5()
container[random_str] = {}
self.r_str = random_str
else:
random_str = md5()
container[random_str] = {}
self.r_str = random_str
handler.set_cookie('__session_id__', random_str, expires=time.time()+200) def set_session(self, key, value):
ret = container[self.r_str][key] = value
return ret def get_session(self, key):
ret = container[self.r_str].get(key, None)
return ret class BaseHandler(tornado.web.RequestHandler):
def initialize(self):
self.session_info = Session(self) class MainHandler(BaseHandler):
def get(self):
# self.write("Hello, world")
self.render('index.html') def post(self, *args, **kwargs):
user = self.get_argument('user')
pwd = self.get_argument('pwd')
if user == 'xiao' and pwd == '123':
self.session_info.set_session('is_login', True)
self.session_info.set_session('user', user)
self.redirect('/main')
else:
self.redirect('/index') class IndexHandler(BaseHandler):
def get(self):
current_user = self.session_info.get_session('user')
if current_user:
self.write(current_user)
else:
self.write('未登录')

  注:自己写个session类,再重写initialize方法。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/index" method="post">
<input type="text" name="user">
<input type="text" name="pwd">
<input type="submit" value="提交">
</form>
</body>
</html>

app:

from tornado import ioloop
import tornado.web
from controler.home import MainHandler, IndexHandler
from commons.settings import settings application = tornado.web.Application([
(r"/index", MainHandler), # url--对应类,django对应的是函数
(r"/main", IndexHandler), # url--对应类,django对应的是函数
],
**settings # 加载配置
) if __name__ == "__main__":
application.listen(8888)
ioloop.IOLoop.instance().start()

  

效果:

未登录时,访问main:

登录:

登陆后:

证明已登录。

最新文章

  1. 如何用百度MIP快速搭建体验友好的移动页面
  2. ubuntu12.04中shell脚本无法使用source的原因及解决方法
  3. &lt;一&gt;获取数据库连接
  4. [2015hdu多校联赛补题]hdu5384 Danganronpa
  5. nginx二级域名配置到文件夹
  6. C语言编译链接
  7. Linux下安装Xdebug
  8. thinkphp接手机网站接口
  9. 基于visual Studio2013解决C语言竞赛题之0307函数求值
  10. 【设计模式系列】之OO面向对象设计七大原则
  11. 浅谈扩展欧几里得算法(exgcd)
  12. Android开发之字体设置
  13. springboot之scheduled任务调度
  14. A1107. Social Clusters
  15. oracle的存储过程和定时任务编写体会
  16. Windows系统下安装zip命令
  17. 8 -- 深入使用Spring -- 3...4 在ApplicationContext中使用资源
  18. jaeger 使用ElasticSearch 作为后端存储
  19. 【week2】结对编程-四则运算 及感想
  20. ant-design getFieldDecorator 无法获取自定义组件的值

热门文章

  1. ubuntu下erlang man的安装
  2. Java [Leetcode 387]First Unique Character in a String
  3. Sprint第一个冲刺(第十天)
  4. sentry docker-compsoe 安装以及简单使用
  5. Java连接MySQL数据库和Oracle数据库并进行简单的SQL操作的一次尝试
  6. 使用RawComparator加速Hadoop程序
  7. Oracle条件分支查询
  8. Eclipse Failed to load D:\android-sdk-windows\build-tools\27.0.3\lib\dx.jar
  9. spring cache之自定义keys的过期时间
  10. 安装windows 2003 server