本章我们学习 Tornado 的路由传参等问题

路由

路由的匹配

Tornado的路由匹配采用的是正则匹配

一般情况下不需要多复杂的正则,正则的基本规则如下(站长之家)

举个例子

(r'/sum/(\d+)', Sum),

该代码指匹配 /sum/  后跟至少一个数字且只有数字的情况

* 需要注意的是网络上传输都是字符串

类 Sum编写

class Sum(tornado.web.RequestHandler):
# 数字类
def get(self, sum):
# 获取数字并返回
self.write('%s,%s' % (type(sum), sum))

我们访问 http://localhost:8001/sum/12 时

返回正常

我们访问 http://localhost:8001/sum/1a2  http://localhost:8001/sum/a12  http://localhost:8001/sum/12a  http://localhost:8001/sum/a 时,均会报出404错误,证明没有匹配到路由

同理,当我们需要匹配两个参数时

(r'/(\w+)/stuggle/(\d+)', Stugggle),

接收时接收两个参数即可

def get(self, st, ins):
  pass

post参数

与get一样,post请求会寻找到该视图的 post 方法

我们给视图 Hello 增加一个post

class Hello(tornado.web.RequestHandler):
# 封装一个类
def get(self):
# get请求进入该方法
self.write('Hello')
def post(self):
# post请求
txt = self.get_argument('txt')
self.write(txt)

self.get_argument('txt') 指获取post传参中 Key 为 txt 的值,路由无需改动

get参数

get获取参数与上面的post没有差别

我们修改get方法来进行测试

    def get(self):
# get请求进入该方法
arg = self.get_argument('arg')
arg1 = self.get_argument('arg1')
self.write('%s+%s' % (arg,arg1))

但是需要注意的是, get_argument  在获取不到该key时会报错,抛出400错误

get_argument  方法其实可以接收三个参数

get_argument(name,default=_ARG_DEFAULT,strip=True)

第一个参数就是key的值,第二个参数为如果接收不到默认的值,第三个是默认去除前后空格

一般情况下我们第二个参数传 None

    def get(self):
# get请求进入该方法
arg = self.get_argument('arg', None)
arg1 = self.get_argument('arg1', None)
self.write('%s+%s' % (arg,arg1))
def post(self):
# post请求
txt = self.get_argument('txt', None)
self.write(txt)

这样就增加了兼容性

Tornado学习笔记(二) 路由/post/get传参的更多相关文章

  1. JS学习笔记 - fgm练习 2-5 - 函数传参 设置div样式

    练习地址:http://www.fgm.cc/learn/lesson2/05.html <script> window.onload = function(){ var oDiv = d ...

  2. vue2.0学习笔记之路由(二)路由嵌套+动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. vue2.0学习笔记之路由(二)路由嵌套

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Tornado学习笔记(一) helloword/多进程/启动参数

    前言 当你觉得你过得很舒服的时候,你肯定没有在进步.所以我想学习新的东西,然后选择了Tornado.因为我觉得Tornado更匹配目前的我的综合素质. Tornado学习笔记系列主要参考<int ...

  5. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  6. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  7. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装

    KVM虚拟化学习笔记系列文章列表----------------------------------------kvm虚拟化学习笔记(一)之kvm虚拟化环境安装http://koumm.blog.51 ...

  8. amazeui学习笔记二(进阶开发4)--JavaScript规范Rules

    amazeui学习笔记二(进阶开发4)--JavaScript规范Rules 一.总结 1.注释规范总原则: As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性. ...

  9. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

随机推荐

  1. 明白生产环境中的jvm参数

    明白生产环境中的jvm参数 写代码的时候,程序写完了,发到线上去运行,跑一段时间后,程序变慢了,cpu负载高了--一堆问题出来了,所以了解一下生产环境的机器上的jvm配置是有必要的.比如说: JDK版 ...

  2. windows修改自定义格式,有的程序写的不严谨的话会造成出错,就需要重置时间格式

  3. 词根 sent/sens

    sense--> to feel (来自于拉丁语 sensus) 词根sent/sens 表示感知 sentiment 感情 consent   consensus  con- 一起, 一起的感 ...

  4. Ubuntu、Windows输入命令appium-doctor提示未找到命令

    输入命令:appium-doctor时,一直报错,提示“未找到命令”,但是输入命令:appium -v能够正确输出我安装版本,这是怎么回事呢? 原来appiu-doctor在1.5.3版本之后没有了需 ...

  5. Kaldi的关键词搜索(Keyword Search,KWS)

    本文简单地介绍了KWS的原理--为Lattice中每个词生成索引并进行搜索:介绍了如何处理OOV--替补(Proxy,词典内对OOV的替补)关键词技术:介绍了KWS的语料库格式:介绍了KWS在Kald ...

  6. webpack设置热更新

    首先需要在package.json中配置一个脚本参数 --hot "dev": "webpack-dev-server --mode development --hot& ...

  7. git关联了无用的,取消关联,并重置gitignore

    一定要在首次上传git之前配置好 ignore文件假如操作问题不小心点了studio中可视化界面的git add . -f (强制的关联所有)这时候如果你看小git status 所有的文件都进行了远 ...

  8. sonar的安装以及使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 1. 简介 1.  sonar是什么 Sonar是一个用于代码质 ...

  9. Linux系统安全学习笔记(1)-- 文件系统类型

    今天看了一个关于Linux系统安全的视频教程,这个教程有很多的知识点,我会分几篇博文将我的笔记分享出来. 首先是关于Linux文件系统类型的一些知识,Linux有四种常见的文件系统类型(网上大多数是3 ...

  10. iframe教程

    有关iframe的最强大的强大的教程 $(window.parent.document).contents().find("#tab_release"+taskId2+" ...