浅析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 多线程应用介绍
Dec 19 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
python读取各种文件数据方法解析
Dec 29 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
Django之无名分组和有名分组的实现
Apr 16 Python
python导入坐标点的具体操作
May 10 Python
python打印文件的前几行或最后几行教程
Feb 13 Python
Python基于read(size)方法读取超大文件
Mar 12 Python
python源文件的字符编码知识点详解
Mar 04 Python
Python Socket编程详解
Apr 25 Python
详解Python牛顿插值法
May 11 Python
python运行脚本文件的三种方法实例
Jun 25 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
一个用于网络的工具函数库
2006/10/09 PHP
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
javascript中Function类型详解
2015/04/28 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
vue实现文件上传功能
2018/08/13 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
公司委托书格式范文
2014/04/04 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers