本章我们学习 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)

这样就增加了兼容性

最新文章

  1. [Asp.net 5] Localization-Asp.net运行时多语言
  2. 自定义Toast和RatingBar的简单用例
  3. Linux下redis的安装
  4. MySQL 5.7 Command Line Client输入密码后闪退和windows下mysql忘记root密码的解决办法
  5. NET 命名规范
  6. Monocular Vision
  7. iOS - KVC 键值编码
  8. discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现
  9. PHP session 跨子域问题总结
  10. Spring-boot中使用@ConditionalOnExpression注解,在特定情况下初始化bean
  11. ATL实现ActiveX插件
  12. NSDateFormatter相关整理
  13. nginx+tomcat单个域名及多个域名配置
  14. 用batch调用DB2 CLPPlus执行多个SQL文
  15. 用gogs轻松搭建个人的git服务器
  16. SpringBoot系列: 理解 Spring 的依赖注入(二)
  17. mysql-索引-日志
  18. Linux基础命令---验证组文件grpck
  19. 通过torodb && hasura graphql 让mongodb 快速支持graphql api
  20. BASIC-26_蓝桥杯_报时助手

热门文章

  1. 'DataVisualization' does not exist in the namespace 'System.Web.UI'一例解决办法
  2. 设置 img 在 div 中水平居中和垂直居中
  3. crosstool-ng编译交叉工具链
  4. SQL SERVER中一些常见性能问题的总结
  5. 使用Python的turtle库画圣诞树
  6. MySql数据库学习笔记(3)
  7. springboot中使用过滤器、拦截器、监听器
  8. 查看oracle 用户执行的sql语句历史记录
  9. Boost 序列化
  10. python判断字符串是字母 数字 大小写