python tonado框架簡單應用

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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章