浅析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的dict,set,list,tuple应用详解
Jul 24 Python
Python正确重载运算符的方法示例详解
Aug 27 Python
Python随机生成均匀分布在单位圆内的点代码示例
Nov 13 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python中for循环把字符串或者字典添加到列表的方法
Jul 20 Python
python读取word 中指定位置的表格及表格数据
Oct 23 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
python随机生成库faker库api实例详解
Nov 28 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 Python
python实现计算图形面积
Feb 22 Python
JAVA SpringMVC实现自定义拦截器
Mar 16 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
PHP开发文件系统实例讲解
2006/10/09 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PHP中的替代语法简介
2014/08/22 PHP
PHP四舍五入、取整、round函数使用示例
2015/02/06 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
跟老齐学Python之一个免费的实验室
2014/09/14 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
python树的同构学习笔记
2019/09/14 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
中学教师岗位职责
2013/11/26 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
反对四风问题自我剖析材料
2014/09/29 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
2015党建工作简报
2015/07/21 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
公司转让协议书
2016/03/19 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android