浅析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 相关文章推荐
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
python utc datetime转换为时间戳的方法
Jan 15 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
python三引号如何输入
Jul 06 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
OpenCV中resize函数插值算法的实现过程(五种)
Jun 05 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 Python
Python 键盘事件详解
Nov 11 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
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
PHP 和 XML: 使用expat函数(二)
2006/10/09 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
使用python统计文件行数示例分享
2014/02/21 Python
python中assert用法实例分析
2015/04/30 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
优秀实习生感言
2014/03/01 职场文书
面试通知单大全
2015/04/20 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
原生JS中应该禁止出现的写法
2021/05/05 Javascript
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL