Tornado学习心得-第二期
tornado吧
全部回复
仅看楼主
level 5
2025年10月27日 23点10分 1
level 5
第一天学习成果总结
1. 定义RequestHandler类的子类UserHandler。并定义get方法、post方法,且它们都只接收1个self参数。get、post内通过self.write(response_string)写入响应报文主体内容
2. __main__代码块内创建Application类的实例对象,构造函数中传入urlmap参数。urlmap取值为[('/user/info', UserHandler)]
3. __main__代码块内调用app.listen(8080)方法,使得应用监听80端口
4. __main__代码块内调用IOLoop.instance().start()正式启动服务
class UserHandler(RequestHandler):
  def get(self):
    self.write('hello')
def post(self):
    self.write('hello')
.
if __name__ == '__main__':
  urlmap = [
    ('/user/info', UserHandler),
  ]
  app = Application(urlmap)
  app.listen(8080)
  IOLoop.instance().start()
2025年10月29日 05点10分 2
level 5
第一天学习成果总结
1. 定义WebSocketHandler类的子类UserHandler。并定义open方法、on_message方法、on_close方法。open、on_close方法接收1个self参数,on_message方法接收self、message两个参数且message就是客户端发送来的消息体。on_message方法内通过self.write_message(response_bytes)写入响应报文主体内容
2. __main__代码块内创建Application类的实例对象,构造函数中传入urlmap参数。urlmap取值为[('/chat', ChatHandler)]
3. __main__代码块内调用app.listen(8080)方法,使得应用监听80端口
4. __main__代码块内调用IOLoop.instance().start()正式启动服务
class ChatHandler(WebSocketHandler):
  def open(self):
    print('open execute')
.
  def on_message(self, message):
    self.write_message(b'hello')
.
  def on_close(self):
    print('on_close execute')
.
if __name__ == '__main__':
  urlmap = [
    ('/chat', ChatHandler),
  ]
  app = Application(urlmap)
  app.listen(8080)
  IOLoop.instance().start()
2025年10月29日 05点10分 3
level 5
第一天学习成果总结
1. 定义TCPServer类的子类ChatServer。并定义handle_stream方法。handle_stream方法接收self、stream、address三个参数且stream就是把网络连接封装为字节流读写工具的对象。handle_stream方法内通过self.write(response_string)写入发送给客户端的TCP数据包主体内容
2. __main__代码块内创建ChatServer类的实例对象chat_server
3. __main__代码块内调用chat_server.listen(8080)方法,使得应用监听80端口
4. __main__代码块内调用IOLoop.instance().start()正式启动服务
class ChatServer(TCPServer):
  def handle_stream(self, stream, address):
    msg = stream.read_bytes(512)
    stream.write('hello')
.
if __name__ == '__main__':
  chat_server = ChatServer()
  chat_server.listen(8080)
  IOLoop.instance().start()
2025年10月29日 05点10分 4
level 5
复习老知识完成咯
[酷]
2025年10月29日 05点10分 5
level 5
Handler函数内写入响应报文主体内容
1. RequestHandler的get方法、post方法内写入text响应
 self.write(response_str)
2. RequestHandler的get方法、post方法内写入json响应(json数据结构以dict类型值给出)
 self.finish(response_dict)
2025年10月29日 05点10分 6
level 5
各种服务器的业务处理函数的函数名
1. RequestHandler的业务处理函数是:get、post
2. TCPServer的业务处理函数是:handle_stream
3. WebSocketHandler的业务处理函数是:on_message
2025年10月29日 05点10分 7
level 5
各种服务器的响应报文内容写入函数(function that writes response body)
1. RequestHandler的响应报文内容写入函数是:self.write、self.finish
2. TCPServer的响应报文内容写入函数是:self.write
3. WebSocketHandler的响应报文内容写入函数是:self.write_message
2025年10月29日 05点10分 8
RequestHandler的self.write写入text数据,self.finish写入json数据
2025年10月29日 09点10分
level 5
RequestHandler类的Handler函数内获取query、form参数
1. 获取query参数
  arg_value = self.get_query_argument(arg_name)
  arg_values = self.get_query_arguments(arg_name)
2. 获取form参数
  arg_value = self.get_body_argument(arg_name)
  arg_values = self.get_body_arguments(arg_name)
3. 获取form参数或query参数
  arg_value = self.get_argument(arg_name)
  arg_values = self.get_arguments(arg_name)
2025年10月29日 06点10分 9
这些函数都支持传入第2个参数,作为参数缺省时的默认值。例如arg_value = self.get_query_argument(arg_name, None)
2025年10月29日 09点10分
level 5
导入常用的类
1. 导入Application类
  from tornado.web import Application
2. 导入RequestHandler类
  from tornado.web import RequestHandler
2025年10月29日 06点10分 10
level 5
导入常用的类
1. 导入IOLoop类
  from tornado.ioloop import IOLoop
2025年10月29日 06点10分 11
level 5
from tornado.web import Application
from tornado.web import RequestHandler
from tornado.ioloop import IOLoop
class UserHandler(RequestHandler):
  def get(self):
    name = self.get_query_argument('name')
    age = self.get_query_argument('age')
    resp_dict = {
      'code': 0,
    }
    self.finish(resp_dict)
def post(self):
    name = self.get_body_argument('name')
    age = self.get_body_argument('age')
    resp_dict = {
      'code': 0,
    }
    self.finish(resp_dict)
if __name__ == '__main__':
  urlmap = [
    ('/user/info', UserHandler),
  ]
  app = Application(urlmap)
  app.listen(8080)
  IOLoop.instance().start()
2025年10月29日 06点10分 12
level 5
第二期学习就到此为止吧
[酷]
2025年10月29日 06点10分 14
level 5
结帖咯
2025年10月29日 09点10分 15
1