浅析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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
Python脚本实现DNSPod DNS动态解析域名
Feb 14 Python
python统计cpu利用率的方法
Jun 02 Python
Python文件和流(实例讲解)
Sep 12 Python
vscode 远程调试python的方法
Dec 01 Python
python tornado微信开发入门代码
Aug 24 Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 Python
基于Python生成个性二维码过程详解
Mar 05 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
django实现日志按日期分割
May 21 Python
Python截图并保存的具体实例
Jan 14 Python
python利用while求100内的整数和方式
Nov 07 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
php 代码优化的42条建议 推荐
2009/09/25 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
2016/11/05 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
关于Python面向对象编程的知识点总结
2017/02/14 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
大学毕业生的自我鉴定
2013/11/30 职场文书
节约用水演讲稿
2014/05/21 职场文书
毕业生面试求职信
2014/06/23 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
社区工作者个人总结
2015/02/28 职场文书
防溺水主题班会教案
2015/08/12 职场文书
《法国号》教学反思
2016/02/22 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技