Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用

基本操作

Tornado的使用

 

tornado_base.py

# Author:song
import tornado.ioloop
import tornado.web

#配置信息
settings = {
    'static_path':'static',
    'static_url_prefix':'/song/',#别名
    'template_path':'templates',
}
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world") #返回数据



class LoginHandler(tornado.web.RequestHandler):
    def get(self):
        #self.get_argument('p')   获取请求参数,相当于django的request.GET.get('p')
        #self.get_body_argument('name') 获取post内容信息
        #self.set_cookie('k1','v1')设置cookie
        #self.set_header('h1','v1')设置请求头
        self.render("login.html",**{'k1':'song','k2':'shi','k3':[1,2,3,4],'k4':{'name':'a','age':18}}) #返回模板

    def post(self, *args, **kwargs):
        print(self.get_argument('user'))
        self.redirect('https://home.cnblogs.com/u/master-song/')#重定向

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

if __name__ == "__main__":
    #创建socket对象,将其加入select
    application.listen(8888)
    #开始循环监听
    tornado.ioloop.IOLoop.instance().start()

模板login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/song/comment.css"/>
    <title>Title</title>
</head>
<body>
<h1>login</h1>
{{k1}}
{{k2}}
<h1>列表</h1>
<ul>
{% for i in k3 %}
<li>{{i}}</li>
{% end %}
</ul>
<h1>字典</h1>
{{k4}}<br>
{{k4['name']}}<br>
{{k4.get('name')}}
<ul>
{% for k,v in k4.items() %}
<li>{{k}}:{{v}}</li>
{% end %}
    <form method="post" action="login">
        <input type="text" name="user"/>
        <input type="submit" value="提交"/>
</ul>
</body>
</html>
login.html

相关文章:

  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
  • 2021-07-24
  • 2021-10-07
  • 2021-09-05
  • 2022-12-23
  • 2021-12-21
猜你喜欢
  • 2021-05-14
  • 2022-12-23
  • 2022-01-27
  • 2022-01-28
  • 2021-11-27
  • 2021-11-23
  • 2022-12-23
相关资源
相似解决方案