浅析Python的web.py框架中url的设定方法


Posted in Python onJuly 11, 2016

网页中的数据在传递的时候有GET和POST两种方式,GET是以网址的形式传参数,在web.py中有着很好的匹配,如果我们配置以下的urls

urls =(
  '/','index',
  '/weixin/(.*?)','WeixinInterface'
  
  )

先不考虑/weixin/后面的东西,现在我们来写index的类

class index:
  def GET(self):
    i = web.input(name = 'kevinkelin',age = 100)     
    return render.index(i.name,i.age)

随便写一个index.html模板文件

$def with(name,age)
$if name:
  I just want to say <em>hello</em> to $name, he is $age years old
$else:
  <em>hello</em>,world!

当访问http://127.0.0.1:8080/ 此时没有传递name与age的值,由于我的GET函数里定义了默认的name与age的值,所以程序会将kevinkelin与26传递到模板中去得到以下的输出

I just want to say hello to kevinkelin, he is 100 years old

当访问http://127.0.0.1:8080/?name=yyx&age=26 即向GET函数中传递name = yyx and age = 26的时候得到以下的输出

I just want to say hello to yyx, he is 26 years old

 我们也可以不定义默认的的参数,即定义为空

i = web.input(name = None,age = None)

当访问http://127.0.0.1:8080/ 的时候将会得到 hello,world!的输出即模板中的else
但是如果你不定义name和age将会出错

i = web.input()

这是因为后面你将i.name与i.age分配到模板当中去,但是全局变量里又没有这两个变量,所以会报错
但有时我们想这样传递参数,不想加那个“?”这时我们得要更改urls规则

urls =(
  '/name=(.*)&age=(.*)','index',
  '/weixin/(.*?)','WeixinInterface'  
  )

重新写class index

class index:
  def GET(self,name,age):
    return render.index(name,age)

这里是将url的参数通过正则匹配然后传递到index类中的GET的参数中
当访问http://127.0.0.1:8080/name=yyx&age=26 时将得到

I just want to say hello to yyx, he is 26 years old

第二种方法看似简单,但其实不好控制,要求写的正则工作量加大了
如果我想知道到底有多少参数通过GET方式传递过来,我可以直接return 来看一下到底有哪些传递过来了
接下来看一下post来的数据:
我们可以制作一个简单的表单或者直接使用fiddler来构造数据进行POST传值 

def POST(self):
    data = web.data()    
    return data

浅析Python的web.py框架中url的设定方法

我想看一下得到的数据类型

return type(data)

得到的是<type 'str'>,也就是说web.py已经将post的数据转换成了str类型
那么我来试一下传递xml

<xml>
<ToUserName>yanxingyang</ToUserName>
<FromUserName>study_python</FromUserName>
<CreateTime>123456</CreateTime>
<MsgType>text</MsgType>
<Content>Just a test</Content>
</xml>

其实这个微信的XML格式做了一些更改,我来试着使用lxml对它进行解析

from lxml import etree
data = web.data()
xml = etree.fromstring(data)
content = xml.find(‘Content').text
return content

得到的结果很好

浅析Python的web.py框架中url的设定方法

Python 相关文章推荐
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Pipenv一键搭建python虚拟环境的方法
May 22 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
详解python解压压缩包的五种方法
Jul 05 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
Python中断多重循环的几种方式详解
Feb 10 Python
浅谈django channels 路由误导
May 28 Python
Python替换NumPy数组中大于某个值的所有元素实例
Jun 08 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
Django Form常用功能及代码示例
Oct 13 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 #Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 #Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
Jul 11 #Python
Python的requests网络编程包使用教程
Jul 11 #Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 #Python
Python中的异常处理相关语句基础学习笔记
Jul 11 #Python
Python编写简单的HTML页面合并脚本
Jul 11 #Python
You might like
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
php设置session值和cookies的学习示例
2014/03/21 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
javascript 一些用法小结
2009/09/11 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
python实现用户名密码校验
2020/03/18 Python
python判断是空的实例分享
2020/07/06 Python
编程实现去掉XML的重复结点
2014/05/28 面试题
小学生操行评语大全
2014/04/22 职场文书
部门活动策划方案
2014/08/16 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
使用python创建股票的时间序列可视化分析
2022/03/03 Python