浅析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学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
Oct 16 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 Python
Python3视频转字符动画的实例代码
Aug 29 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
Jun 29 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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
如何去掉文章里的 html 语法
2006/10/09 PHP
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
javascript 网页跳转的方法
2008/12/24 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
jsTree使用记录实例
2016/12/01 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
Vue精简版风格概述
2018/01/30 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
js制作提示框插件
2020/12/24 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
详解Python的Django框架中的通用视图
2015/05/04 Python
Python多进程写入同一文件的方法
2019/01/14 Python
原生python实现knn分类算法
2019/10/24 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
排查整治工作方案
2014/06/09 职场文书
清洁工岗位职责
2015/02/13 职场文书
教师聘用意向书
2015/05/11 职场文书
护士岗位竞聘书
2015/09/15 职场文书
自荐信大全
2019/03/21 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技