Tornado基本功能的实现 | Tornado

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tornado基本功能的实现 | Tornado相关的知识,希望对你有一定的参考价值。

# 异步非阻塞的框架
    import tornado.ioloop
    import tornado.web


    class MainHandler(tornado.web.RequestHandler):
        def get(self):
            self.write("hello world")


    class LoginHandler(tornado.web.RequestHandler):
        def get(self):
            # 5.获取传入get,post数据
            # get_data = self.get_argument(‘p‘)
            # print(get_data)
            # self.request 封装了用户发来的所有请求
            # 如果封装的方法无法获取,都可以在self.request中获取;
            # print(type(self.request))  # <class ‘tornado.httputil.HTTPServerRequest‘>
            from tornado.httputil import HTTPServerRequest

            # 6.返回额外响应内容
            # self.set_cookie(‘k1‘, ‘v1‘)
            # self.set_header(‘h1‘, ‘v1‘)

            # 7.重定向
            # self.redirect(‘/index‘)

            # 4.渲染页面,传递上下文
            self.render(login.html, obj1=value1, obj2=value2)
            self.render(login.html, **{
                obj1: obj1,
                obj2: [1,2,3,4,5],
                obj3: {name:mic, age:18}
            })

        def post(self):
            # self.write(‘....‘)
            # 获取post提交数据
            v = self.get_argument(user)
            print(v)
            self.redirect(http://www.baidu.com)


    # 8.配置静态文件
    settings = {
        # 静态文件目录
        static_path: static,
        # url请求时前缀,如果不加,默认是项目根目录下绝对路径;
        static_url_prefix: /test/,
        # 模板文件路径
        template_path: templates,
    }

    # 1.生成路由规则
    application = tornado.web.Application(
        [(r"/index", MainHandler),(r"/login", LoginHandler),],
        **settings,
    )

    if __name__ == "__main__":
        # 2.建立socket对象
        # 将socket对象添加到select或epoll中
        application.listen(8888)
        # 3.将select或epoll开始死循环while True:
        tornado.ioloop.IOLoop.instance().start()
# login.html
    <body>
        <h1>登录</h1>
        <div>{{obj1}}</div>
        <!-- 根据索引下标获取-->
        <div>{{ obj2[0] }}</div>
        <!-- 遍历列表 -->
        <ul>
            {% for item in obj2 %}
            <li>{{ item }}</li>
            {% end %}
        </ul>

        <!-- 以键取值,支持python内置方法 -->
        {{ obj3 }}<br>
        {{ obj3[‘name‘] }}<br>
        {{ obj3.get(‘age‘) }}
        <ul>
            {% for k, v in obj3.items() %}
            <li>{{ k }}: {{ v }}</li>
            {% end %}
        </ul>
    </body>
    <body>-->
        <!--<h1>登录</h1>-->

        <!--<form action="/login" method="POST">-->
            <!--<input type="text" name="user"/>-->
            <!--<input type="submit" value="提交"/>-->
        <!--</form>-->
        <!--<div><img src="/test/images/bd_logo1.png" alt="引入静态文件"></div>-->
    <!--</body>

 

以上是关于Tornado基本功能的实现 | Tornado的主要内容,如果未能解决你的问题,请参考以下文章

Python之tornado框架实现翻页功能

tornado服务器实现原理

Tornado框架实现图形验证码功能

Tornado简介

tornado基本使用一

16.tornado操作之聊天室和爬取图片功能整合