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
效果大致如下:
当然我觉得可以爬取一些土味情话摆到那里,效果会成为一个表白墙。哈哈