Torando 起步

Posted yanhuazidi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Torando 起步相关的知识,希望对你有一定的参考价值。

 
基本结构:
 1 from tornado.web import Application,RequestHandler
 2 from tornado.httpserver import HTTPServer
 3 from tornado.ioloop import IOLoop
 4 
 5 class IndexHandler(RequestHandler):
 6     def get(self):
 7         self.write(Hello World)
 8     def post(self):
 9         pass
10 
11 app = Application(handlers=[(/,IndexHandler)])
12 server = HTTPServer(app)
13 server.listen(8888)
14 IOLoop.current().start()

 

将端口号写到配置文件中
from tornado.options import define,parse_config_file,options
    1. 定义端口号在配置文件中的名称,类型,默认值
 define(‘名称‘,type=int,default=8888)
    2. 解析配置文件
parse_config_file(‘配置文件路径‘)
    3. 读取配置文件中的内容
options.名称
URL支持正则表达式,利用路径的变化请求不同资源    
    用()来表示正则模板
   app = Application(handlers=[(/(day[0-9]+),IndexHandler),(/java/(day[0-9]+)/(input[0-9]+),JavaHandler)]
    在view函数中可以接受正则匹配内容                                              
    def get(self, day,input):
     self.write(Hello Python)      
利用参数请求不同资源 get       
        浏览器允许多个传参名相同:/python?day=1&day=2&day=3
 self.get_query_argument(name, default=_ARG_DEFAULT, strip=True)
            返回 value
            name : 参数名
            default : 默认值,用户不提供参数不设置会报错。
            strip : 去参数两端的空白字符,默认去除
            如果参数不止一次出现在url中,则返回最后一个值
self.get_query_arguments(name, strip=True)
            用户不提供参数会返回空列表
            以列表类型返回传参中name的所有值
利用参数请求不同资源 post
     day = self.get_body_argument(day,default=0000000,strip=False)
   self.write(Hello Python+day)
   day = self.get_body_arguments(day,strip=False)
   print(day)
        参数同上,在请求body中取值
其他
 get_argument() #等同get_query_argument +get_body_argument
 get_arguments() #同理
    适用场景: 在post请求中,请求行中也有参数的情况
  示例:
        POST /python?day=1&day=2&day=3 http1.1
        header={}
        
        body={day:1,day:2,day:3}
from tornado.web import Application,RequestHandler
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define,parse_config_file,options

class IndexHandler(RequestHandler):
  def get(self):
    self.write(<a href=/java>Hello World go java</a>)
    self.write(<br><a href=/python>Hello World go python</a>)
  def post(self):
    pass

class JavaHandler(RequestHandler):   def get(self,day=None,input=None):     self.write(Hello Java)     if day:       self.write(Hello +day)     if input:       self.write(Hello +input)   def post(self):     pass    class PythonHandler(RequestHandler):   #覆盖RequestHandler get方法,响应get请求   def get(self):     self.write(Hello Python)   #GET获取参数 http://127.0.0.1:9999/python?day=111111111     day = self.get_query_argument(day,default=0000000,strip=False)     self.write(Hello Python+day)    #/python?day=1&day=2&day=3&day=4&day=5     day = self.get_query_arguments(day,strip=False)     print(day)#[1,2,3,4,5] #覆盖RequestHandler post方法,响应post请求   def post(self):     day = self.get_body_argument(day,default=0000000,strip=False)     self.write(Hello Python+day)     day = self.get_body_arguments(day,strip=False)     print(day) define(port,type=int,default=8888) parse_config_file(config/config.txt) app = Application(handlers=[(/,IndexHandler), (/java,JavaHandler), (/java/([0-9]*)/([a-z0-9]*),JavaHandler), (/python,PythonHandler)]) server = HTTPServer(app) server.listen(options.port) IOLoop.current().start()

 

重定向
  为GET方式访问,支持参数的拼接传递
self.redirect(/python?day=1)
文件提交(表单要设置enctype=multipart/form-data)
    request 是 RequestHandler对象的一个属性,引用的HttpServerRequest对象
    该对象封装了与请求相关的所有内容print(self.request)  , 其files属性引用着用户通过表单上传的文件,{} 结构
#结构示例
self.request.files={input_name1:[{content_type:image/jpeg, #文件类型 body:b...., #文件二进制内容 filename:文件1名 #原文件名 },{文件2},{文件3},,,,], input_name2:,,,,,,,,,,,,,,,}

#input_name为文件类型表单控件名称,其值为此表单提交的文件列表,列表元素为字典,一个字典包含一个文件对象的全部属性
 
文件保存
 img = self.request.files[input_name1]
    for a in img:
        content_type = a[content_type]
        filename = a[filename]
        body = a[body]
        with open(path+filename,wb) as f:
            f.write(body)

 






以上是关于Torando 起步的主要内容,如果未能解决你的问题,请参考以下文章

Torando 介绍

torando-ioloop生命周期

第1章 起步

pycharm是用来干嘛的

vue项目起步准备

工程化起步:webpack