在上一篇中我们了解了建起tonado的服务,为了方便我们更好的使用这里建议大家仿照django框架去构建。
首先建立static放置静态文件如js,jquery等
建立templates文件放入html
建立upfile文件放置上传文件
建立views文件我们在这个文件下写视图
建立server.py
import tornado.web
import tornado.ioloop
import tornado.httpserver
import config #这里是配置文件
from application import Application #这里是建立的路由配置器
if __name__ == "__main__":
app=Application()
# application.listen(8888)
httpServer=tornado.httpserver.HTTPServer(app)
# httpServer.listen(8000)
httpServer.bind(config.options["port"])
httpServer.start()
tornado.ioloop.IOLoop.instance().start()
这里就把服务跟设计代码分离开了,我们就可以愉快的玩耍了
建立config这里面配置文件。
import os
BASE_DIRS=os.path.dirname(__file__)
#参数
options={
"port":7001,
}
#配置tornoto的静态文件路径
settings={
'debug':True,
'static_path':os.path.join(BASE_DIRS,"static"),
'template_path':os.path.join(BASE_DIRS,'templates')
}
接下来就构建appliccation
import tornado.web
import views.index
import config
class Application(tornado.web.Application):
def __init__(self):
handlers=[
(r'/',views.index.IndexHandler),
(r'/json1',views.index.json1),
(r'/redirect',views.index.RedirectHandler),
(r'/Errorstack',views.index.Errorindex),
tornado.web.url(r'/wenge',views.index.wenge,{'word3':'h1','word4':'h2'},name='wengegood'),
(r'/zgr/(\w+)/(\w+)/(\w+)',views.index.zgr),
(r'/postfile',views.index.PostFileHandler)
]#这个里面是路由,根据自己的实际情况来
super(Application,self).__init__(handlers,**config.settings)#继承到
server.py的Aplication
接下来就在views中构建简单的视图玩耍吧
import tornado.web
from tornado.web import RequestHandler
#name找到所在路由
class IndexHandler(RequestHandler):
def get(self,*args,**kwargs):
url=self.reverse_url("wengegood")
self.write("<a href='%s'>去另外一个界面</a>"%url)
# self.write("gggggg")
#
# self.write("sunck is a good tornado")
#json格式返回界面
class json1(RequestHandler):
def get(self,*args,**kwargs):
per={
'name':'wenwen',
'age':20,
'sex':'男'
}
self.write(per)
class RedirectHandler(RequestHandler):
def get(self,*args,**kwargs):
self.redirect("/")#重定向
#自定义错误
class Errorindex(RequestHandler):
def write_error(self, status_code, **kwargs):
if status_code==500:
code=500
self.write('服务器出错')
if status_code==404:
code=404
self.write('资源不存在')
self.set_status(code)
def get(self,*args,**kwargs):
flag=self.get_query_argument("flag")
if flag=='0':
self.send_error(404)
self.write('hello tornoto')
#后台传入参数
class wenge(RequestHandler):
def initialize(self,word3,word4):
self.word3=word3
self.word4=word4
def get(self, *args, **kwargs):
print(self.word3,self.word4)
self.write('wenge is a nice men')
#url传入参数
class zgr(RequestHandler):
def get(self,a,b,c,*args, **kwargs):
print(a,b,c)
self.write('zgr is a nice man')
#post接收参数
class PostFileHandler(RequestHandler):
def get(self, *args, **kwargs):
a={'a':'sdfa'}
self.render('1.html',a)
def post(self,*args, **kwargs):
name=self.get_body_argument('username')
passwd=self.get_body_argument('passwd')
hobbylist=self.get_body_arguments('hobby')
print(name,passwd,hobbylist)
self.write('姓名%s,密码%s,爱好%s'%(name,passwd,hobbylist))