在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的更多相关文章

  1. 【Python】 Web开发框架的基本概念与开发的准备工作

    Web框架基本概念 现在再来写这篇文章显然有些马后炮的意思.不过正是因为已经学习了Flask框架, 并且未来计划学习更加体系化的Django框架,在学习过程中碰到的很多术语等等,非常有必要通过这样一篇 ...

  2. [深度分析] Python Web 开发框架 Bottle

    [深度分析] Python Web 开发框架 Bottle(这个真的他妈的经典!!!) 作者:lhf2009913 Bottle 是一个非常精致的WSGI框架,它提供了 Python Web开发中需要 ...

  3. WEB开发框架性能排行与趋势分析

    WEB开发框架性能基准测试解读与趋势分析 TechEmpower的<Web Framework Benchmarks>性能基准测试,是关注Web开发框架发展的重要途径.但是内容数据众多,每 ...

  4. 常见Python的Web开发框架

    在今天,Python里有很多开发框架用来帮助你轻松创建web应用.web开发框架存在的意义就在于可以快速便捷的构建应用,而不用去在意那些没必要的技术细节(协议.报文.数据结构). 到2020年为止,基 ...

  5. 在Centos下对高并发web框架Tornado的性能进行测试

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_89 在之前的一篇文章中,我们在1g1核的惨淡硬件环境下,对 uwsgi + django 和 gunicorn+ django 的 ...

  6. 兼容Mono的下一代云环境Web开发框架ASP.NET vNext

    微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...

  7. 基于MVC4+EasyUI的Web开发框架经验总结(17)--布局和对话框自动适应大小的处理

    在我自己的<Web开发框架>中,用了很多年的EasyUI,最新版本EasyUI为1.4.5,随着版本的更新,其很多功能得到了很大的完善和提高,同时也扩展了一些新的功能,以前在布局和对话框弹 ...

  8. 基于MVC4+EasyUI的Web开发框架经验总结(16)--使用云打印控件C-Lodop打印页面或套打报关运单信息

    在最新的MVC4+EasyUI的Web开发框架里面,我整合了关于网购运单处理的一个模块,其中整合了客户导单.运单合并.到货扫描.扣仓.出仓.查询等各个模块的操作,里面涉及到一些运单套打的操作,不过由于 ...

  9. 第一个web框架tornado

    简介 tornado,是我学到的第一个web框架是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google ...

随机推荐

  1. 漫谈Code Review的错误实践

    从刚开始工作时到现在,已经写了7年的代码,大部分代码都被人review过,自己也review了很多人的代码.在上一家公司的时候,我负责的一轮面试是专门进行Code Review的练习和经验谈. 通过在 ...

  2. plsql连接远程数据库快捷方式

    不用修改任何文件就可以直接连接远程数据库

  3. return void ajax

    public class UserInfo { private String name; private Integer age; public String getName() { return n ...

  4. 函数补充:动态参数,函数嵌套,global与nonlocal关键

    一丶动态参数 1.*args 位置参数,动态传参 def func(*food): print(food) print(func("米饭","馒头"," ...

  5. Kendo MVVM (一) 概述

    Kendo MVVM (一) 概述 Model View ViewModel (MVVM)  是开发人员经常使用的一种设计模式,以实现数据模型(Model)和视图(View)的分离.MVVM 中的 V ...

  6. mui自定义事件实例

    监听自定义事件(接收页面应用) 添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,如下: window.addEventListener('customEvent',fun ...

  7. less的使用总结

    简单执行less 一.使用npm全局安装less: npm install -g less 二.创建less文件 三.执行命令将less文件转换成css文件 lessc less/style.less ...

  8. 使 windows 无需输入开机密码自动进入系统

    步骤 运行netplwiz: 勾去图中所示复选框,确定后输入密码.

  9. [会员登入] 透过 E-Mail进行身份认证、启用会员权利

    [會員登入] 透過 E-Mail進行身份認證.啟用會員權利 这个问题是在论坛上看见的 其实,遇见问题的时候,我会建议初学者先想一下「流程」 您想怎么作?需要哪些步骤? 一旦「流程」清楚了 您是哪一步骤 ...

  10. Android(java)学习笔记129:对ListView等列表组件中数据进行增、删、改操作

    1. ListView介绍 解决大量的相似的数据显示问题 采用了MVC模式: M: model (数据模型) V:  view  (显示的视图) C: controller 控制器 入门案例: aci ...