教程集 www.jiaochengji.com
教程集 >  Python编程  >  python进阶  >  正文 十分钟学会web开发利器之tornado

十分钟学会web开发利器之tornado

发布时间:2021-01-19   编辑:jiaochengji.com
教程集为您提供十分钟学会web开发利器之tornado等资源,欢迎您收藏本站,我们将为您提供最新的十分钟学会web开发利器之tornado资源

一、从 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("""<!DOCTYPE html><html><body><a href="login">点此登录</a></body></html>""")
class LoginHandler(tornado.web.RequestHandler): 
    """响应登录页请求"""
    
    def get(self): # 以get方式请求
        self.write(
            """
            <!DOCTYPE html><html><body><form method="POST" action="/login">
                账号:<input type="text" name="account" value="" /><br />
                密码:<input type="password" name="passwd" value="" />
                <input type="submit" value="确定" />
            </form></body></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'

您可能感兴趣的文章:
十分钟学会web开发利器之tornado
Python web目前较火的三大框架
tornado和django学哪个
flask与tornado哪个简单
tornado支持python3吗
Python3爬虫利器:Tornado的安装
去哪里找python的开源项目
没学过编程可以自学python吗
为什么用django那么多
python tornado如何启动和配置?

[关闭]
~ ~