Tornado入门案例:留言板

前言

所使用的框架:Torndao框架 python 主流的开发框架

  • Tornado框架:支持高并发
  • Django框架:大而全的框架,内置的东西很多
  • Flask框架:轻量级的框架

Django和Flask使用的最多。

简单来说,Tornado是没有ORM操作的,Django是有的。

Tornado框架

组成:路由系统、视图、模板。

在这里插入图片描述

实操:搭建一个hello world

from tornado import web,ioloop,httpserver

# 视图
# 首页
class MainPageHandler(web.RequestHandler):
    def get(self, *args, **kwargs):
        self.write('hello world')
# 路由系统
app = web.Application(
    [   # 取消转义:r
        (r'/',MainPageHandler),
    ]
)

if __name__ == '__main__':
    # 前台 socket
    http_server = httpserver.HTTPServer(app)
    http_server.listen(8000)
    ioloop.IOLoop.current().start()

然后运行程序启动,浏览器地址栏输入:http://localhost:8000/,即可看到一个“hello world”字样打印在了浏览器页面上。

把一个html页面显示到浏览器上:

# 首页
class MainPageHandler(web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render('index.html')

# 设置
settings = {
    'template_path':'templates' ,# 设置模板文件路径
    'static_path':'statics', # 设置静态文件路径
}

# 路由系统
app = web.Application(
    [   # 取消转义:r
        (r'/',MainPageHandler),
    ], **settings
)

完整代码与前端页面

from tornado import web,ioloop,httpserver
import time
# 留言保存到全局变量中
MESSAGES = [
    {'id':1,'name':'韩信','time':'2020-05-20 05:21:00','content':'张三,我喜欢你','num':1},
    {'id':2,'name':'李白','time':'2020-05-20 05:21:00','content':'来干来干','num':2}
]


# 视图
# 首页
class MainPageHandler(web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render('index.html',name='乔乔的表白墙',messages=MESSAGES)

# 许愿页面
class WishHandler(web.RequestHandler):
    def get(self, *args, **kwargs):
        self.render('wish.html')
    def post(self,*args,**kwargs):  # 对应post请求
        # 从前台获取数据
        content = self.get_argument('content')
        name = self.get_argument('name')
        if content:
            # 添加数据到局部变量中
            MESSAGES.append({
                'name':name,
                'content':content,
                'id':len(MESSAGES)+1,
                'num':len(MESSAGES)+1,
                'time':time.strftime('%Y-%m-%d %H:%M:%S'),
            })
            # 跳转到首页
            self.redirect('/')
        else:
            self.write("内容不能为空")
# 设置
settings = {
    'template_path':'templates' ,# 设置模板文件路径
    'static_path':'statics', # 设置静态文件路径
}

# 路由系统
app = web.Application(
    [   # 取消转义:r
        (r'/',MainPageHandler),
        (r'/wish',WishHandler)
    ], **settings
)

if __name__ == '__main__':
    # 前台 socket
    http_server = httpserver.HTTPServer(app)
    http_server.listen(8000)#监听端口号8000
    ioloop.IOLoop.current().start()

前端页面:
链接:https://pan.baidu.com/s/16LyJSIY7pQhFQZ1iZEl3hg
提取码:uyp6

效果大致如下:
在这里插入图片描述
当然我觉得可以爬取一些土味情话摆到那里,效果会成为一个表白墙。哈哈

猜你喜欢

转载自blog.csdn.net/qq_43598138/article/details/106240179