pythontonado框架簡單應用

堅持一下下發表於2018-12-19

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




相關文章