tornado路由系统
在web框架中,路由表中的任何项都是一个元组,每个元组都包含模式和处理程序。当httpserver收到http请求时,服务器从收到的请求中解析url路径(在http协议开始行中),然后顺序遍历路由表。如果url路径可以匹配模式,则http请求将发送到web应用程序中的相应处理程序进行处理。
由于url路由机制,web应用程序开发人员不必处理复杂的http服务器层代码,只需编写web应用程序层(处理程序)的逻辑即可。Tornado中的每个url都对应一个类。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__auth__ = "zhangyanlin"
import tornado.web
import tornado.ioloop
class IndexHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.write("Hello World, My name is 张岩林")
class LoginHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.write("<input type = 'text'>")
class RegisterHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.write("<input type = 'password'>")
application = tornado.web.Application([
(r'/index/(?P<page>\d*)',IndexHandler), # 基础正则路由
(r'/login',LoginHandler),
(r'/register',RegisterHandler),
])
# 二级路由映射
application.add_handlers('buy.zhangyanlin.com$',[
(r'/login', LoginHandler),
])
if __name__ == "__main__":
application.listen(8080)
tornado.ioloop.IOLoop.instance().start()
步骤1:执行脚本并侦听端口8080
步骤2:浏览器客户端访问/索引-->http://127.0.0.1:8080/index
步骤3:服务器接受请求并将其发送到相应的类以处理请求
步骤4:收到请求后,类根据不同的请求方法调用并执行相应的方法(post/get/delete…)
步骤5:然后将类方法返回到浏览器
settings = { 'template_path':'views',
'static_path':'static',
css,JS,Jquery等静态文件放置static文件夹中
'static_url_prefix': '/sss/',
<script src="/sss/jquery-1.9.1.min.js"></script>
'cookie_secret': "asdasd",
'xsrf_cokkies':True, }
application = tornado.web.Application([
(r'/index',IndexHandler),
],**settings)
Tornao中的模板语言与django中的类似。模板引擎将模板文件加载到内存中,将数据嵌入其中,最后获得一个完整的字符串,然后将其返回给请求者。
Tornado的模板支持“控制语句”和“表达式语句”。控制语句用{%和%}包装,例如{%if len(items)>2%}。表达式语句用{{和}}包装,例如{{{items[0]}}。
控制语句和相应的Python语句的格式基本相同。我们支持if、for、while和try。这些语句的逻辑结尾需要标记为{%end%}。它还通过扩展和块语句实现模板继承。
加密cookie
恶意客户端很容易伪造Cookie。添加要在cookie中保存当前登录用户的ID和其他信息。你需要在cookie上签名以防止伪造。Tornado通过set_secure_Cookies和get_secure_cookie方法直接支持此功能。要使用这些方法,需要在创建application_secret时提供一个名为cookie的密钥可以将其作为关键字参数导入应用程序设置:
#!/usr/bin/env python# -*- coding:utf-8 -*-
import tornado.ioloopimport tornado.web
class MainHandler(tornado.web.RequestHandler): def get(self): if not self.get_secure_cookie("mycookie"): # 获取带签名的cookie
self.set_secure_cookie("mycookie", "myvalue") # 设置带签名的cookie
self.write("Your cookie was not set yet!") else:
self.write("Your cookie was set!")
application = tornado.web.Application([
(r"/index", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
使用cookie执行简单的用户定义身份验证。接下来,我们将编写一个非常棒的用户定义会话用户身份验证
使用Python生成随机验证代码需要引用插件和IO模块,这也非常容易实现。当然,它还需要参考会话来确定验证码是否错误。接下来,用验证代码编写一节用户登录验证,然后查看效果。插件和执行文件必须放在不同的目录中
设置cookie,指定秒数过期,
name表示传入的key,
value表示传入相对应的value值,
expires表示当前日期在加5秒过期
/function setCookie(name,value,expires){
var temp = [];
var current_date = new Date();
current_date.setSeconds(current_date.getSeconds() + 5);
document.cookie = name + "= "+ value +";expires=" + current_date.toUTCString();
}
最初,我想打开一个新的帖子,但我最好将代码粘贴在这里。当它对会话验证有用时,可以直接复制并带走.