在上一篇中我們瞭解了建起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))