博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tornado day1
阅读量:6227 次
发布时间:2019-06-21

本文共 3774 字,大约阅读时间需要 12 分钟。

Tornado 之路由配置

首先导入模块,使用Application方法中可配置多个路由,格式必须为列表中是元组

元组的第一个是配置的url,第二个参数时自定义的类(继承自RequestHandler)

import tornado

from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, parse_config_file, options
from tornado.web import Application, RequestHandler

define('port', type=int, default=8888)parse_config_file('./config/config')app = Application([('/', IndexHandler), ('/login', LoginHandler), ....])server = HTTPServer(app)server.listen(options.port)IOLoop.current().start()

其中port为创建的配置文件中的绑定端口号的变量  parse_config_file('./config/config')是找到解析配置文件的位置

通过define来设置port数据类型,当配置文件没有提供端口号时,默认值为default=8888,

IOLoop是开始执行语句,

Tornado 之自定义类

自定义的类中会含有两个方法分别对应form表单提交时的post方法,url请求的get方法、在get和post中可以通过一些方法发送获取前端的值

class LoginHandler(RequestHandler):    def get(self, *args, **kwargs):        pass    def post(self, *args, **kwargs):        # 如果输入的应户名输入的是abc密码是123就正确否则错误        uname = self.get_body_argument('uname', None)        upwd = self.get_body_argument('upwd', None)

Tornado 之 请求行 请求头  请求体的运用

请求体

利用get_body_argument或get_body_arguments可以获得请求体中的参数

.get_body_argument获得的是单独的参数值,get_body_arguments获得的是列表形式的参数值.

另外,两者还有2个明显的区别:

  使用get_body_argument时,最好提供默认值,防止访问时没有提供服务器需要的参数导致的400:bad request.

  使用get_body_arguments时,如果客户端没有提供服务器需要的参数,只会获得一个空列表,不会产生错误.

  如果在请求体中存在重名的参数,get_body_argument仅能取到最后一个设置的参数值,而get_body_arguments可以取到所有的重名的键所对应的值.

class LoginHandler(RequestHandler):    def get(self, *args, **kwargs):        pass    def post(self, *args, **kwargs):        # 如果输入的应户名输入的是abc密码是123就正确否则错误        uname = self.get_body_argument('uname', None)        upwd = self.get_body_argument('upwd', None)        # print(uname, upwd)        unames = self.get_body_arguments('uname')        upwds = self.get_body_arguments('upwd')

请求行

利用get_query_argument或get_query_arguments可以获得以get方式发起请求时携带的参数

.get_query_argument获得的是单独参数值,get_query_arguments获得的是以列表形式组织的参数值.

另外,两者还有2个明显区别:

  使用get_query_argument时,最好提供默认值,防止客户端访问时未提供所需参数导致400:Bad Request错误.

  使用get_query_arguments时,客户端未提供所需参数时,只会获得一个空列表,但不会产生错误.

  当有多个重名的参数提供时,利用get_query_argument仅能获得最后一个参数值,利用get_query_arguments可以获得所有重名参数的参数值.

class IndexHandler(RequestHandler):    def get(self, *args, **kwargs):        html = '
' \ '
用户名
' \ '
密码
' \'
' fail_html = '
''
' # 获取以get方式向根路径发起请求时携带的参数 msg = self.get_query_argument('msg', None) msgs = self.get_query_arguments('msg') print(msg) print(msgs) if msg: self.write(fail_html) else: self.write(html) def post(self): pass

请求头

RequestHandler里面有一个属性,叫做request,引用着一个HttpServerRequest类型的对象,该对象中封装了与请求相关的几乎一切内容.

我们可以利用self.request.headers获取所有请求头.headers是以字典的方式组织请求头中的名和值.

class BlogHandler(RequestHandler):    def get(self, *args, **kwargs):        uname = self.get_query_argument('uname', None)        # 获取自定义请求头的内容        print(self.request)        # 获取所有请求头的相关内容        hs = self.request.headers        print(hs)        print(hs.get('myhead', None))        if uname:            self.write(uname)        else:            self.write('好')    def post(self, *args, **kwargs):

hs 打印结果如下:

HTTPServerRequest(protocol='http', host='127.0.0.1:9999', method='GET', uri='/blog?uname=abc', version='HTTP/1.1', remote_ip='127.0.0.1', headers={'Host': '127.0.0.1:9999', 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Referer': 'http://127.0.0.1:9999/', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'Accept-Language': 'en-US,en;q=0.5'})

 

转载于:https://www.cnblogs.com/bianjing/p/9037665.html

你可能感兴趣的文章
遍历json对象---Java
查看>>
从头开始搭建一个Spring boot+RabbitMQ环境
查看>>
bash编程 将一个目录里所有文件存为一个array 并分割为三等分——利用bash array切片...
查看>>
自己动手开发IOC容器
查看>>
hdparm
查看>>
[LeetCode] Best Time to Buy and Sell Stock
查看>>
《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
查看>>
C++11学习
查看>>
【java】java工具类StringUtils,org.apache.commons.lang3.StringUtils
查看>>
WPF太阳、地球、月球运动轨迹模拟
查看>>
Getting Started with Scala
查看>>
curl != casperjs ? - Google Groups
查看>>
Oracle从字符串资源中得到想要的数据分析
查看>>
敏捷开发中的Code Review
查看>>
事务 commit
查看>>
{右键我的电脑无法打开计算机管理}解决方法
查看>>
如何获取和发送Http请求和相应
查看>>
【HeadFirst 设计模式学习笔记】4 工厂模式
查看>>
CentOS6.4 安装mysql cmake的参数说明
查看>>
创新型政府网站群建设
查看>>