web开发框架tornado
在server.py文件中 import tornado.web import tornado.ioloop
import tornado.httpserver import config
from views import index
from application import Application app = Application() if __name__ == '__main__':
# 创建服务
# app.listen()
# app.listen(config.options['port']) # 自己创建一个服务
httpServer = tornado.httpserver.HTTPServer(app)
# 给该服务绑定一个端口
httpServer.bind(config.options['port'])
# 开启一个进程
httpServer.start() # 启动服务,并监听
tornado.ioloop.IOLoop.current().start()
在config.py文件中 专门用来 存放和配置信息有关的
import os # 获取当前目录下的根目录
BASE_DIR = os.path.dirname(__file__) # 参数
options = {
"port": 8000, } IMAGES_PATH = "./image/test"
# 配置
settings = { "static_path": os.path.join(BASE_DIR, "static"),
"template_path": os.path.join(BASE_DIR, "templates"), # debug为True是调试模式,如果为False的是生产模式 和Django这点相同
"debug": True, # 为True的特性:
# 取消缓存编译的模板 compiled_template_cache = False
# 取消缓存静态文件的hash值 static_hash_cache = False
# 提供追踪信息 serve_traceback = True
# 自动重启 autoreload=True # self.redirect 重定向
# self.send_error(state_code=500)
# self.write_error(state_code=500)
# self.reverse_url() 反向解析 # tornado.web.RequestHandler
# 利用http协议向服务端传递参数
# 提取url特定参数,get/post传递参数,既可以获取get请求也可以获取post请求,在http的报文头中增加自定义的参数
# self.get_query_argument() 获取get请求时url中的参数
# self.get_query_arguments() 获取get请求时url中的参数两个以上同名的返回值为一个list
# request对象
# tornado.httputil.HTTPFile对象
} print("当前的根目录为")
print(BASE_DIR) print("当前静态文件存储路径为")
print(settings["static_path"]) print("当前模板文件的存储路径为")
print(settings["template_path"])
在appication.py中存放和路由有关
import tornado.web from views import index, login
import config class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", index.IndexHandler),
(r"/sunck", index.SunckHandler, {"word1": "good", "word2": "nice"}),
(r"/login", login.LoginHandler),
(r"/json", index.JsonHandler),
(r"/json2", index.JsonsHandler) ] super(Application, self).__init__(handlers, **config.settings)
print(config.settings)
# super(Application, self).__init__(handlers, autoreload=True)
在 index.py中存放和路由有关的首页视图集
import tornado.web
import json
import os
import base64 class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("hello world") class SunckHandler(tornado.web.RequestHandler):
# 获取路由中的参数,并传给http请求方式,进行处理
def initialize(self, word1, word2):
self.word1 = word1
self.word2 = word2 def get(self):
print(self.word1, self.word2)
self.write("sunck....") class JsonHandler(tornado.web.RequestHandler):
def get(self):
per = {
"name": "张三",
"age": 23,
"classes": "初二(1)班",
}
# 将Python数据类型转换为字符串
json_str = json.dumps(per)
self.set_header("Content-Type","Application/json") self.write(json_str) class JsonsHandler(tornado.web.RequestHandler):
def get(self):
per = {
"name": "张三",
"age": 23,
"classes": "初二(1)班",
"height": 78,
}
self.write(per) # 重定向到首页
class RedirectHandler(tornado.web.RequestHandler):
def get(self):
self.redirect("/")
self.write("redirect......")
web开发框架tornado的更多相关文章
- 【Python】 Web开发框架的基本概念与开发的准备工作
Web框架基本概念 现在再来写这篇文章显然有些马后炮的意思.不过正是因为已经学习了Flask框架, 并且未来计划学习更加体系化的Django框架,在学习过程中碰到的很多术语等等,非常有必要通过这样一篇 ...
- [深度分析] Python Web 开发框架 Bottle
[深度分析] Python Web 开发框架 Bottle(这个真的他妈的经典!!!) 作者:lhf2009913 Bottle 是一个非常精致的WSGI框架,它提供了 Python Web开发中需要 ...
- WEB开发框架性能排行与趋势分析
WEB开发框架性能基准测试解读与趋势分析 TechEmpower的<Web Framework Benchmarks>性能基准测试,是关注Web开发框架发展的重要途径.但是内容数据众多,每 ...
- 常见Python的Web开发框架
在今天,Python里有很多开发框架用来帮助你轻松创建web应用.web开发框架存在的意义就在于可以快速便捷的构建应用,而不用去在意那些没必要的技术细节(协议.报文.数据结构). 到2020年为止,基 ...
- 在Centos下对高并发web框架Tornado的性能进行测试
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_89 在之前的一篇文章中,我们在1g1核的惨淡硬件环境下,对 uwsgi + django 和 gunicorn+ django 的 ...
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...
- 基于MVC4+EasyUI的Web开发框架经验总结(17)--布局和对话框自动适应大小的处理
在我自己的<Web开发框架>中,用了很多年的EasyUI,最新版本EasyUI为1.4.5,随着版本的更新,其很多功能得到了很大的完善和提高,同时也扩展了一些新的功能,以前在布局和对话框弹 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息
在最新的MVC4+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于 ...
- 第一个web框架tornado
简介 tornado,是我学到的第一个web框架是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google ...
随机推荐
- php:php相关的函数或用法记录
//1:判断字符串是否全是字母组成的 $str = 'AAKAaa_aLJIGF'; var_dump(ctype_alpha($str)); //boolean false,全部是英文时才是返回tr ...
- NET Core 2.0 自定义
ASP.NET Core 2.0 自定义 _ViewStart 和 _ViewImports 的目录位置 在 ASP.NET Core 里扩展 Razor 查找视图目录不是什么新鲜和困难的事情,但 _ ...
- css文本换行的问题
今天敲代码的时候发现了一个一直都没太注意的小问题,当我在一个200px的div中写了一长串的‘f ‘时发现没有换行 但加上空格或标点符号后就能自动换行 原来浏览器把它当成了一串完整的单词,所以默认不换 ...
- SpringBoot---Web开发---SSL配置
1.[生成证书] 2.[SpringBoot配置SSL] 3.[http转向https]
- Corn 表达式
CronTrigger CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表.CronTr ...
- MDX分页查询
WITH SET [e16a30d0-2174-4874-8dae-a5085a75a3e2] as NONEMPTY({[Measures].[终端销售数量], [Measures].[终端销售吊牌 ...
- 关闭mysql validate-password插件
mysql5.7 的validate-password对密码策略有限制,比如长度大小写,太麻烦,我习惯开发环境下为root,所以在开发环境关闭这个插件的话只需在/etc/my.cnf中添加valida ...
- .Net平台互操作技术:03. 技术验证
上面两篇文章分别介绍了.Net平台互操作技术面临的问题,并重点介绍了通过P/Invoke调用Native C++类库的技术实现.光说不做是假把式,本文笔者将设计实验来证明P/Invoke调用技术的可行 ...
- ios 利用runtime任性跳转
在开发项目中,会有这样变态的需求: 推送:根据服务端推送过来的数据规则,跳转到对应的控制器 feeds列表:不同类似的cell,可能跳转不同的控制器(嘘!产品经理是这样要求:我也不确定会跳转哪个界面哦 ...
- uvm_reg_cbs——寄存器模型(十六)
当你完成寄存器模型的时候,你就会想到给后来的人一个接口,给他更多的扩展,让他做更多的事,一般而言,只有做VIP时,会想到做callbacks. typedef class uvm_reg; typed ...