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 ...
随机推荐
- 各种安卓模拟器连接Adb
夜神模拟器:adb connect 127.0.0.1:62001 逍遥安卓模拟器:adb connect 127.0.0.1:21503 天天模拟器:adb connect 127.0.0.1:65 ...
- XML文件的一些操作
XML 是被设计用来传输和存储数据的, XML 必须含有且仅有一个 根节点元素(没有根节点会报错) 源码下载 http://pan.baidu.com/s/1ge2lpM7 好了,我们 先看一个 XM ...
- Vue.js之vue-router路由
vue学习的一系列,全部来自于表哥---表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 1概述 vue-r ...
- java的三大特性之一多态概述
多态---概念 所谓多态就是一个引用在不同情况下的多种状态.多态是指通过指向父亲的指针,来调用在不同的子类中实现的方法. 多态---注意事项 00.java允许父类的引用变量引用它的子类的实例(对象) ...
- springboot+shiro+cas实现单点登录之shiro端搭建
github:https://github.com/peterowang/shiro-cas 本文如有配置问题,请查看之前的springboot集成shiro的文章 1.配置ehcache缓存,在re ...
- for循环操作DOM缓存节点长度?
不管是在网上,还是在翻看书籍的时候,都能看到在使用for循环操作DOM节点时要做数节点长度的缓存,以确保性能最优化! 这二种写法格式大致是下面这样的 /*节点集合*/ var domarr=docum ...
- 前端HTML以及HTML5(基本标签)
前面一章介绍了一下前端的发展,这章简单介绍一下html的发展以及基本的标签. 一.HTML的发展史 1.概念 超文本标记语言(HyperText Markup Language,简称HTML)是为 [ ...
- pc端常见布局---垂直居中布局 单元素定高
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 洛谷 P1145 约瑟夫
题目描述 n个人站成一圈,从某个人开始数数,每次数到m的人就被杀掉,然后下一个人重新开始数,直到最后只剩一个人.现在有一圈人,k个好人站在一起,k个坏人站在一起.从第一个好人开始数数.你要确定一个最小 ...
- java面试题(杨晓峰)---第四讲强引用、软引用、弱引用、幻想引用有什么区别?
在java语言中,除了原始数据类型的变量,其他所有都是所谓的引用类型,指向各种不同的对象,理解引用对于掌握java对象生命周期和JVM内部相关机制非常有帮助. 今天问题:强引用.软引用.弱引用.幻想引 ...