浅析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 19 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
python文本数据相似度的度量
Mar 12 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
在Tensorflow中实现梯度下降法更新参数值
Jan 23 Python
Python3搭建http服务器的实现代码
Feb 11 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
python实现邮件循环自动发件功能
Sep 11 Python
使用Python爬虫爬取小红书完完整整的全过程
Jan 19 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 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插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
2017年最新PHP经典面试题目汇总(上篇)
2017/03/17 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
js文件中调用js的实现方法小结
2009/10/23 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
BootStrap+Mybatis框架下实现表单提交数据重复验证
2017/03/23 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
python global关键字的用法详解
2019/09/05 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
HTML5引入的新数组TypedArray介绍
2012/12/24 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
海南地接欢迎词
2014/01/14 职场文书
品质主管岗位职责
2014/03/16 职场文书
付款委托书范本
2014/04/04 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
会计工作检讨书
2015/02/19 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python