
一、从 hello, world 开始
如果你的 python 环境还没有安装 tornado,请直接使用 pip 安装:
pip install tornado
下面的代码,虽然只有区区六行(不包括导入模块的两行),却是一个完整的 web 服务程序。运行下面的代码,就开启了一个 web 服务,从本机浏览器直接访问 http://127.0.0.1,不出意外的话,我们的第一个网页 hello, world 即可正常显示出来。
demo.py
# -*- coding: utf-8 -*-
import tornado.ioloop
import tornado.web
class HomeHandler(tornado.web.RequestHandler):
def get(self): # 响应以get方式发送的请求
self.write("hello, world") # 向请求者(浏览器)应答hello, world
app = tornado.web.Application([ (r"/", HomeHandler), ]) # URL映射
app.listen(80) # 绑定侦听端口
tornado.ioloop.IOLoop.instance().start() # 启动服务如果多少了解一点 http 协议,知道 get / post 方法,相信你一定能够读懂。也许你的项目规划了很多的url,也许你的服务需要监听非80端口,没有关系,在这个代码上扩展就行。仅仅六行!!!请让我们向犀利的、简洁的、无所不能的 python 致敬!
划重点:tornado.web.RequestHandler.write() 不只可以接受字符串参数,还可以接受列表或字典参数——如果应答类型为json时,这个重载特性非常高效。
二、最简单的登录
假定我们有这样一个 web 服务需求:
(1)首页:地址“/”,显示“点此登录”两个汉字,点击则跳转到登录页面;
(2)登录页:地址“/login”,以 get 方式访问,则显示账号、密码输入框和登录按钮;以 post 方式访问,则是提交表单提交,验证登录信息。登录成功,跳转至个人信息页面,否则,跳转至首页;
(3)个人信息页:地址“/me”,显示登录账号。
以上面的代码为基础,我们首先要做的工作是 URL 和 对应的处理类之间的关联。这件工作实际上是非常轻松愉快的:
app = tornado.web.Application([ (r"/", HomeHandler), (r"/login", LoginHandler), (r"/me", MeHandler) ])
接下来,我们要实现 HomeHandler、LoginHandler 和 MeHandler 这三个类了。通常,我们习惯把这些和URL 对应的处理类,保存为一个独立的文件,比如文件名为 handlers.py,然后在服务器脚本 demo.py 中导入它们。
handlers.py
# -*- coding: utf-8 -*-
import tornado.web
class HomeHandler(tornado.web.RequestHandler):
"""响应主页请求"""
def get(self): # 以get方式请求
self.write("""nbsp;html>点此登录""")
class LoginHandler(tornado.web.RequestHandler):
"""响应登录页请求"""
def get(self): # 以get方式请求
self.write(
"""
nbsp;html>
"""
)
def post(self): # 以post方式请求(本例为提交表单)
account = self.get_argument('account', None)
passwd = self.get_argument('passwd', None)
if account == 'xufive' and passwd == 'dgdgwstd':
self.redirect('/me?name=%s' 您可能感兴趣的文章:
登录查看全部
参与评论
手机查看
返回顶部