浅析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实现查询IP地址所在地
Mar 29 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
python获取服务器响应cookie的实例
Dec 28 Python
Python数据类型之Number数字操作实例详解
May 08 Python
python mqtt 客户端的实现代码实例
Sep 25 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
python中return不返回值的问题解析
Jul 22 Python
Docker如何部署Python项目的实现详解
Oct 26 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 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
加强版phplib的DB类
2008/03/31 PHP
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
javascript实现手动点赞效果
2019/04/09 Javascript
[07:48]DOTA2上海特级锦标赛主赛事首日RECAP
2016/03/04 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
Python中的各种装饰器详解
2015/04/11 Python
Python中的默认参数详解
2015/06/24 Python
Python中格式化format()方法详解
2017/04/01 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
python 模块导入问题汇总
2021/02/01 Python
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
慰问信格式
2015/02/14 职场文书
小学副班长竞选稿
2015/11/21 职场文书
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python