tornado

作者: 水果坚果燕麦片 | 来源:发表于2019-03-11 16:47 被阅读0次

    hello.py

    """__author__ = song"""
    import os
    
    import tornado.ioloop
    import tornado.web
    from tornado.options import define, options, parse_command_line
    import pymysql
    
    # 定义默认启动的端口为80
    define('port', default=8080, type=int)
    
    class MainHandler(tornado.web.RequestHandler):
        # 必须继承RequestHandler
        def get(self):
            # 渲染响应给浏览器的数据
            name = self.get_argument('name')
            self.write('hello tornado')
    
        def post(self):
            # self.write('hello tornado post')
            name = self.get_argument('name')
    
    class ResHandler(tornado.web.RequestHandler):
        def get(self):
    
            self.write('<h2>zzz</h2>')
            self.set_status(404)
            self.set_cookie('zzz', '123',expires_days=1)
            # self.clear_cookie('zzz')
    
            self.redirect('/')
    
    class DaysHandler(tornado.web.RequestHandler):
        # def get(self, year, month, day):
        def get(self, month, day, year):  # http://127.0.0.1/days/2019/03/11/:11年2019月03日
    
            self.write('%s年%s月%s日' %(year , month, day))
    
    class Days2Handler(tornado.web.RequestHandler):
        # def get(self, year, month, day):
        def get(self,  month, day, year): # 2019年03月11日
            # 用了参数P之后则就一一对应起来,不受一开始get里参数的顺序影响
    
            self.write('%s年%s月%s日day' %(year , month, day))
    
        def post(self, month, day, year):
            self.write('post: 只负责新增数据')
    
        def delete(self, month, day, year):
            self.write('delete: 只负责删除')
    
        def patch(self, month, day, year):
            self.write('patch: 修改全部属性')
    
        def put(self,month, day, year):
            self.write('put: 修改全部属性')
    
    class EntryHandler(tornado.web.RequestHandler):
        def initialize(self):
            self.conn = pymysql.Connection(host='127.0.0.1',user='root',password='root',port=3306,database='flask9')
            self.cursor = self.conn.cursor()
            print('initialize')
            # self.write('initialize')
    
        def prepare(self):
            print('prepare')
    
        def get(self):
            print('get')
            # 查询flask9数据库 查询所有学生信息
            sql = 'select * from stu;'
            self.cursor.execute(sql)
            data = self.cursor.fetchall()
            print(data)
            self.write('查询数据')
    
        def post(self):
            pass
    
        def on_finish(self):
            # 最后执行的方法
            print('on_finish')
            self.conn.close()
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            self.render('index.html')
    
    def make_app():
        # handlers里参数中定义路由匹配地址
        return tornado.web.Application(handlers=[
            (r'/', MainHandler),
            (r'/res/', ResHandler),
            (r'/days/(\d{4})/(\d{2})/(\d{2})/', DaysHandler),
            (r'/days2/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/', Days2Handler),
            (r'/entry_point/', EntryHandler),
            (r'/index/', IndexHandler)
        ],
        #     D:\workspace\tornado\day01\templates
        template_path=os.path.join(os.path.dirname(os.path.abspath(__file__)),'templates')
        )
    
    if __name__ == '__main__':
        # 解析启动命令 python xxx.py --port=端口号
        parse_command_line()
        # 启动
        app = make_app()
        app.listen(options.port)
        # 监听IO实例
        tornado.ioloop.IOLoop.current().start()
    

    base.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        {% block title %}
        {% end %}
    </head>
    <body>
    {% block content%}
    
    {% end %}
    </body>
    </html>
    

    index.html

    {% extends 'base.html' %}
    
    {% block title %}
        首页(子模板)
    {% end %}
    
    {% block content %}
        <p>hello 模板继承</p>
    {% end %}
    

    相关文章

      网友评论

          本文标题:tornado

          本文链接:https://www.haomeiwen.com/subject/lhvbpqtx.html